选项& jQuery .click()不会一起工作

时间:2010-05-12 10:18:13

标签: javascript jquery google-maps mouseclick-event

这适用于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。我究竟做错了什么? 感谢

3 个答案:

答案 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();
});