【问题标题】:option & jQuery .click() won't work together选项和 jQuery .click() 不能一起工作
【发布时间】:2011-06-23 16:10:56
【问题描述】:

这在 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 之外的任何其他浏览器中工作。我究竟做错了什么? 谢谢

【问题讨论】:

  • 为什么不关注$('countryDropDown').change 事件?

标签: javascript jquery google-maps mouseclick-event


【解决方案1】:

问题是您是否真的需要这样做。我打赌你不需要访问option 元素,所以你也可以使用.change()

var countryID;

$('#countryDropDown').change(function() {
   countryID = $(this).val();
   dostuff();
});

更新:

根据documentation.val() 应该可以工作,但如果由于某种原因不起作用,请执行以下操作:

var countryID;
$('#countryDropDown').change(function() {
   countryID = $('option:selected', this).val();
   dostuff();
});

更新2:

我不知道它是否相关(我认为它应该可以工作)但可能是您的 option 元素没有 value 属性,喜欢这样:

<option>Foo</option>

如果是这样,您应该尝试使用.text() 而不是.val()

$('option:selected', this).text();

【讨论】:

  • 你为什么不认为我需要访问选项元素?我需要从中获得价值……还有其他方法吗?也许获取将获取选定选项值的选择框的值?
  • @meow - $(this).val(),在选择元素的上下文中,获取选定选项的值。这是正确的。
  • @meow:是的,这正是我发布的内容。 select 元素的值是当前选择的选项。您没有在操作 option 元素,这就是我的意思,您可能不需要访问它。
  • @meow:我对此表示怀疑。每个 jQuery 方法都适用于大多数流行的浏览器。这就是 jQuery 的用途,不必处理跨浏览器问题。 FF 补偿的 JS 中可能还有其他问题。也许您必须发布更完整的代码。
  • @ karim 这不起作用,如果我这样做 console.log $('#countryDropDown').change(function() { countryID = $(this).val(); console.log(国家ID) });我得到一个空字符串..
【解决方案2】:

喵,我们也有同样的问题……

这是解决方案:

如果你想访问每个选项的 id。这样就可以了。

$("#countryDropdown").change(function() {
   var countryId = $('option:selected',this).attr('id');
   dostuff();
});

【讨论】:

    【解决方案3】:

    val() 用于检索表单元素的值。如果您愿意,选项不是表单元素而是子元素。此外,如果他们使用键盘,您的方法将不起作用。你最好这样做。

    $("#countryDropdown").change(function() {
        var countryId = $(this).val();
        dostuff();
    });
    

    【讨论】:

    • 好的,所以它可以工作,但它给了我一个空字符串作为回报,而不是点击选项的值..
    • 如果您获得一个 ID,那么它应该在选项的值中。 -> 将与 val() 一起使用。同意,如果你想要选项文本,也许是 text()?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多