我正在使用Jquery来选择下拉菜单的值。
我需要在OnChange
事件(jQuery中的.change
)上执行一些操作,但是如果下拉菜单中只有一个选项,我就无法在OnChange
事件中捕获它。
我的下拉菜单是动态生成的,所以我不知道会有多少个选项,但如果只有一个选项,我就会遇到问题。
有没有办法在只有一个<option>
的<select>
上捕获OnChange
事件?
我正在使用Jquery来选择下拉菜单的值。
我需要在OnChange
事件(jQuery中的.change
)上执行一些操作,但是如果下拉菜单中只有一个选项,我就无法在OnChange
事件中捕获它。
我的下拉菜单是动态生成的,所以我不知道会有多少个选项,但如果只有一个选项,我就会遇到问题。
有没有办法在只有一个<option>
的<select>
上捕获OnChange
事件?
你不需要一个onchange事件。只需拥有一个从onchange调用的函数,如果只有一个项目,就直接调用该函数。
function populate() {
//do work to populate #selector
if($("#selector option").length == 1) {
$("#selector").hide();
workerFunction();
} else {
$("#selector").show();
}
$("#selector").change(workerFunction);
//the following line of code will work like a default:
workerFunction();
}
function workerFunction() {
//put whatever used to be in your onChange function here
}
$("#selector").change(workerFunction);
- shanabus<label for="checkboxThatUsedToBeASelect">
<input type="checkbox" id="checkboxThatUsedToBeASelect" name="checkboxThatUsedToBeASelect" value="something" />
</label>
$('#checkboxThatUsedToBeASelect').change( function(){
});
现在您拥有了更加用户友好的输入方式,当它被选中或取消选中时,它将触发更改。 :D
怎么样,加一个条件事件绑定器?就像这样:
var changeHandler = function (method) {
alert(method);
};
if ($('select option').length > 1) {
$('select').change(function() {
changeHandler('change');
});
} else {
$('select').click(function() {
changeHandler('click');
});
}
onchange
事件中,你需要做什么? - pete当元素的内部状态发生改变时,将触发 onchange 事件。由于您有一个具有唯一值的下拉菜单,其状态永远不会改变,因此该事件不会被触发。
看起来你的选项标签中有HTML错误。
除此之外,为了针对使用jQuery动态创建的元素进行操作,你需要使用委托。
$('selector').change( function(e){...}); // without delegator
$('body').on('change','selector', function(e){...}); // with delegator, it detects even an element added dinamically
话虽如此,您应该能够检测到新旧元素的更改
.change正在寻找另一个囚犯来交换位置。不幸的是,在你的情况下,存在一个孤独无依的案例,因此该事件未被触发。
选择星球
然后选择月球
。这将会使第二个下拉菜单在0-63之间变化,而地球只有一个选项(除非你计算Cruithne,但你不应该这么做)。 - Niklas