首页 > jquery 对于 select 操作

jquery 对于 select 操作

问题:我给 select 绑定了 change 事件,然后根据选择的 option 数据进行对应操作,但是有个问题是,如果我第二次选择上次一样的 option 是无法触发事件。因为没有 change 所以没有执行。但是我想要不管改变没有,都要执行对应选择 option 的方法。我使用 select 事件也不行,请问大家有没有办法。不行的话,我就用 ul li 模拟一个下拉选择了。


我的实现存在问题,感谢@边城的指出,采用他的答案
以下的原答案:


如果用change的话,会出现题主描述的情况那样;
如果用click的话,那么点击select下拉的时候也会触发事件;
然而option又不能绑定click事件...
自己动手,丰衣足食:

Element.prototype.onSelectChange = function(callback) {
    var cached = 0;
    this.addEventListener("click", function(event) {
        if (cached == this) {
            callback.call(this, event);
            cached = 0;
        } else {
            cached = this;
        }
    });
}

使用方法:

var select = document.getElementById("select");
select.onSelectChange(function(event) {
    // code here;
});

在 Stack Overflow 找到一个回答(某楼),很巧妙,但原理尚不明确

$('select').on('click',function(ev){
    if(ev.offsetY < 0){
      //user click on option  
    }else{
      //dropdown is shown
    }
});

亲测有效,而且键盘选的都会触发 click

https://jsfiddle.net/jamesfan...

【热门文章】
【热门文章】