单击chrome中选择选项元素的事件

64 jquery select google-chrome

我遇到以下问题Chrome:

var items = $("option", obj);  

items.each(function(){

    $(this).click(function(){

        // alert("test");
        process($(this).html());
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

这个click事件似乎没有发生Chrome,但是起作用Firefox.

我想能够click一对option元素从一个组合,如果我这样做,而不是另一种元素,可以说,<li>它工作正常.有任何想法吗?谢谢.

Sam*_*ham 80

我不认为click事件对选项有效.但是,它对选择元素有效.尝试一下:

$("select#yourSelect").change(function(){
    process($(this).children(":selected").html());
});
Run Code Online (Sandbox Code Playgroud)

  • @lukasgeiter但是,如果用户点击已经选择的选项,还想要触发事件,那么解决方案是什么?改变不起作用...... (14认同)
  • @zuluk 好吧,这是真的。虽然这对我来说听起来像是一个相当罕见的用例。也许在您的答案中添加有关它的评论?:) (2认同)

小智 21

尽管直接调用事件,我们仍可以实现这种方式<select>.

JS部分:

$("#sort").change(function(){

    alert('Selected value: ' + $(this).val());
});
Run Code Online (Sandbox Code Playgroud)

HTML部分:

<select id="sort">
    <option value="1">View All</option>
    <option value="2">Ready for Review</option>
    <option value="3">Registration Date</option>
    <option value="4">Last Modified</option>
    <option value="5">Ranking</option>
    <option value="6">Reviewed</option>
</select>
Run Code Online (Sandbox Code Playgroud)


Dar*_*zer 10

更改选择并更新选择的简单方法是这样。

// BY id
$('#select_element_selector').val('value').change();
Run Code Online (Sandbox Code Playgroud)

另一个例子:

//By tag
$('[name=selectxD]').val('value').change();
Run Code Online (Sandbox Code Playgroud)

另一个例子:

$("#select_element_selector").val('value').trigger('chosen:updated');
Run Code Online (Sandbox Code Playgroud)


Eli*_*lle 5

我发现以下内容对我有用 - 而不是在点击时使用,用于更改,例如:

 jQuery('#element select').on('change',  (function() {

       //your code here

}));
Run Code Online (Sandbox Code Playgroud)


小智 5

我有类似的问题。change事件对我不利,因为用户单击时我需要刷新一些数据option。经过几次试验,我得到了以下解决方案:

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

我同意这是非常丑陋的,您应该坚持进行尽可能的change活动,但这解决了我的问题。