0

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

<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');
     }
});

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

4

3 回答 3

2

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

于 2013-02-17T23:50:06.360 回答
2

有几种方法可以工作,但它不会跨浏览器兼容。

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

仅适用于 Firefox ( jsFiddle )

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

  2. 如果下拉是列表框的形式,那么上面提到的事件在大多数浏览器上都支持,除了 IE

  3. 使用插件或创建一个弹出 div 作为弹出菜单。通过这样做,您可以拥有任何您想要的功能,而不是局限于原生 DOM 元素。

  4. 否则使用 if 语句

站点上的文档非常广泛

于 2013-02-18T00:00:21.203 回答
0

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

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

不这样做是没有if意义的。select在元素下方发生了一定程度的依赖于实现的行为,浏览器对此不 同意。例如,Firefox 会触发选项的点击事件,而 Chrome 则不会。

于 2013-02-17T23:59:38.910 回答