jQuery如何触发select的某个选项

时间:2013-02-17 23:39:32

标签: jquery events select option

我想在选择某个选项时做一些事情,我该如何定义? 这是一个例子:

<select id="mySelect">
   <option>...</option>
   ...
   <option>...</option>
   <option id="myOption">I need exactly this option</option>
</select>

我怎么做?我是这样做的:

$('#city').change(function(){
 if($("#another_city", this).is(":selected")){
        alert('ok');
     }
});

我想看看我怎么能以另一种方式做到这一点,当然,如果可能的话,不管怎么样。

3 个答案:

答案 0 :(得分:2)

似乎唯一可行的方法是使用if语句。 <option>标签没有任何真正的事件处理程序。

答案 1 :(得分:2)

这有几种方法可行,但它不会与浏览器兼容。

$('#myOption').on('click', function(event) {
   //write code here
   alert('clicked');
});

仅在Firefox中使用here (jsFiddle)

  1. Firefox是唯一的浏览器,允许在下拉列表中触发'onclick','onmousedown'和'onmousemove'事件。

  2. 如果下拉列表是一个列表框,那么大多数浏览器都支持上述事件,除了IE

  3. 使用插件或创建弹出窗口作为弹出菜单。通过这样做,您可以拥有所需的任何功能,而不仅限于本机DOM元素。

  4. 否则使用if语句

  5. this网站上的文档非常广泛

答案 2 :(得分:0)

只需检查更改事件后的值:

$('#city').change(function (){
    if (this.value === "One City") {
        // do stuff
    } else if (this.value === "Another City") {
        // do other stuff
    }
});

没有if这样做是没有意义的。在select元素和browsers don't agree on this下方存在一定程度的依赖于实现的行为。例如,Firefox会在某个选项上触发点击事件,而Chrome则不会。