我正在尝试为像这样的元素的子元素绑定点击事件:
$('#A').children().bind('click',function () {
console.log('Hello');
});
HTML
<select id='A'>
<option val='1'>One</option>
<option val='2'>Two</option>
</select>
我已经检查了stackoverflow中的其他问题,例如Bind element and its children in jQuery,并且到处都提到了相同的方法。这里有什么问题吗?
修改
我知道有一个可用的更改事件,但是,请考虑当我选择所选的相同选项时需要触发更改事件的场景。
更改仅在选项从One
更改为Two
时有效,反之亦然,但如果我选择相同的选项,即:从Two
更改为Two
该怎么办?本身?
答案 0 :(得分:1)
其他回复建议解决问题。您的代码可能无法在严格的浏览器中运行的原因是选项元素的click event is not defined。您可以使用更改事件,或者如果您确实需要处理click,则不应使用本机select元素。
答案 1 :(得分:0)
您可能需要change()
个事件而不是click
,并且不需要与option
绑定。只要通过点击选项更改选项选项,就会触发该事件。
<强> Live Demo 强>
$('#A').bind('change',function () {
console.log('Hello');
});
答案 2 :(得分:0)
您可以在select
元素中使用 .change() 事件,因为更改.change()
时会触发option
事件:
$('#A').on('change',function () {
console.log('Hello');
}).change();
答案 3 :(得分:0)
这是你想要的行为吗?的 http://jsfiddle.net/P97ML/ 强>
$('#A').bind('change',function () {
console.log('Hello');
});
答案 4 :(得分:0)
将on()与select
的更改事件一起使用。
这样做:
$('#A').on('change',function () {
console.log($(this).val()); // log selected option value
});
答案 5 :(得分:0)
您正确地执行此操作(适用于大多数情况)但options
内的select
不是这种情况
您需要使用更改事件,如果您想引用所选选项,可以使用
:selected
$('#A').bind('change',function () {
console.log('Hello');
var $selectedOption = $("option:selected",this);
});
答案 6 :(得分:0)