【发布时间】:2010-07-01 08:40:14
【问题描述】:
我是 jQuery 的绝对菜鸟,在前端开发方面非常糟糕,所以这是我的问题。
使用以下 HTML
<select id="event_category_id" name="event_category_id">
<option value="">Select Category</option>
<option value="1">Category One</option>
<option value="2">Category Two</option>
<option value="3">Category Three</option>
</select>
还有下面的jQuery
$(document).ready(function() {
// commands go here
$('#event_category_id option').click( function(e) {
// e.stopImmediatePropagation();
alert( $('#event_category_id option:selected').text() );
});
});
单击一次,我会显示两次警报,每次都显示正确的选择文本。通过取消注释 stopImmediatePropagation 来纠正它。
所以我的问题是,如果这是事件冒泡/捕获,由于选择没有文本,只有选项,因此其中一个警报不会是空白的。
或者我认为所有这些工作的方式是错误的?
感谢您的宝贵时间。
【问题讨论】:
-
在
<select>中改用.change().. -
欢迎来到SO,请不要忘记访问stackoverflow.com/faq
-
许多答案提供了一个解决方案:使用
change而不是click。虽然这可行,但我想知道:为什么click不工作?为什么click处理程序被触发了两次?谁能解释一下?
标签: jquery event-bubbling