这是我的代码:
$(".multiple").each(function() {
$(this).bind("mousedown",function() {
alert();
});
});
以下是适用的HTML:
<select>
<option value = "textbox">TextBox</option>
<option class = "multiple" value = "multiplechoice">MultipleChoice</option>
<option class = "multiple" value = "dropdown">DropDown</option>
</select>
我希望看到某种警报框,但它似乎无法运作。我该如何解决这个问题?
答案 0 :(得分:3)
我不确定你是否可以将事件绑定到option
元素,因为它们是由浏览器绘制的,并且一旦呈现就属于shadow DOM(我认为)。 It doesn't work for me at least in Chrome 17
然而,你可以这样做......
$('select').change(function() {
alert('Selected is ' + $(this).find('option:selected').text());
});
答案 1 :(得分:0)
这样的事可能吗?
$('.multiple').change(function(){
alert('something');
});
HTML:
<select class="multiple">
<option value = "textbox">TextBox</option>
<option value = "multiplechoice">MultipleChoice</option>
<option value = "dropdown">DropDown</option>
</select>
答案 2 :(得分:0)
不要去那里 - 从经验。这不是一个跨浏览器的解决方案。 我的建议是,在select的“change”事件中,测试当前所选选项是否具有“multiple”类,如果是,则运行特定逻辑。
答案 3 :(得分:0)
您可以在select上捕获事件,并按选项类
过滤它$('select').change(function() {
var o = $(this).find('option:selected');
if ('multiple' != o.attr('class')) {
return;
}
alert('Clicked: ' + o.text());
});
您也可以使用click()
代替change()
来获取不会导致更改的点击,但您会获得同时放下选择的点击次数,也就是说,如果您的选择是size="1"
。这种方法需要你的事件处理程序来解释误报,因此不鼓励。