我有一个选择框数组,类“taskcompleted”。我希望能够在更换盒子时做点什么。
<select class = "taskcompleted" >
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
我使用过这个javascript代码
function initselects() {
var myselects = $('.taskcompleted');
myselects.each( function(){ // any select that changes.
console.log( $(this).val() );
}).change();
}
页面加载时,它会记录每个选择框的更改。我不希望这种情况发生。我只希望在页面加载后记录更改。
答案 0 :(得分:1)
你的意思是这样的吗?这将为类taskcompleted
您遇到的问题是,您要将.change()
添加到最终,这实际上会触发您不希望发生的变更 - 所以相反,只需听取它
function initselects() {
$('select.taskcompleted').on('change', function() {
// do something
});
}
答案 1 :(得分:1)
您可以使用change()
将事件附加到每个select
,如下所示:
function initselects() {
$('.taskcompleted').change(function() {
console.log($(this).val());
});
}
答案 2 :(得分:0)
如果您不想在页面加载时进行日志记录,则只需从末尾删除change()即可。 一般来说,你可以像那样使用它
JavaScript的:
var myselects = $('.taskcompleted');
myselects.change( function(){
console.log($(this).attr('name') + ': ' + $(this).val() );
});
HTML:
<select name="1stselectbox" class = "taskcompleted" >
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="2ndselectbox" class = "taskcompleted" >
<option value="Maybe">Maybe</option>
<option value="dontknow">I don't know</option>
</select>
因此,您可以直接在jQuery对象上设置更改侦听器,而无需使用循环(每个)。上面的例子甚至会打印选择了哪个选择框(可能有用)。例如。将第一个框更改为是时,输出为:1stselectbox: Yes
JSFiddle:https://jsfiddle.net/x8jwy92h/