这适用于FF,但不适用于IE,Chrome或Safari。
$('#countryDropDown option').click(function() {
var countryID = $(this).val();
dostuff();
});
// countryDropDown = id of select
所以,正如你所看到的,我想在每个选项上附加一个点击事件。
我试过了
var allOpts = $('#countryDropDown option'),
l = allOpts.length,
i = 0;
for (i = 0; i < l; i += 1) {
$(allOpts[i]).click(function() {
var countryID = $(this).val();
doStuff();
});
}
它仍然不想在任何其他浏览器中工作,但FF。我究竟做错了什么? 感谢
答案 0 :(得分:2)
问题是你是否真的需要这样做。我敢打赌,您不需要访问option
元素,因此您也可以使用.change()
:
var countryID;
$('#countryDropDown').change(function() {
countryID = $(this).val();
dostuff();
});
<强>更新强>
根据documentation,.val()
应该有效,但如果不出于任何原因,请执行此操作:
var countryID;
$('#countryDropDown').change(function() {
countryID = $('option:selected', this).val();
dostuff();
});
<强> UPDATE2:强>
我不知道它是否相关(我认为它应该可行)但可能是你的option
元素没有value
属性,喜欢这样:
<option>Foo</option>
如果是这样,您应该尝试.text()
而不是.val()
。
$('option:selected', this).text();
答案 1 :(得分:1)
这是解决方案:
如果要访问每个选项的ID。这样做。
$("#countryDropdown").change(function() {
var countryId = $('option:selected',this).attr('id');
dostuff();
});
答案 2 :(得分:0)
val()用于检索表单元素的值。如果您愿意,选项不是表单元素,而是子元素。如果他们使用键盘,您的方法将无法工作。你最好这样做。
$("#countryDropdown").change(function() {
var countryId = $(this).val();
dostuff();
});