点击chrome中select选项元素的事件

我在Chrome遇到以下问题:

 var items = $("option", obj); items.each(function(){ $(this).click(function(){ // alert("test"); process($(this).html()); return false; }); }); 

click事件似乎并没有在Chrome触发,但在Firefox起作用。

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

我不相信点击事件在选项上是有效的。 但是,对于select的元素是有效的。 试试这个:

 $("select#yourSelect").change(function(){ process($(this).children(":selected").html()); }); 

尽pipe直接使用<select>调用事件,我们也可以实现这种方式。

JS部分:

 $("#sort").change(function(){ alert('Selected value: ' + $(this).val()); }); 

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> 

我发现以下工作对我来说 – 而不是使用点击,使用更改例如:

  jQuery('#element select').on('change', (function() { //your code here })); 

我有类似的问题。 change事件对我来说并不好,因为当用户点击option时,我需要刷新一些数据。 经过几次审判,我有这个解决scheme:

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

我同意,这是非常丑陋的,你应该坚持change事件,你可以,但这解决了我的问题。

简单的方法来改变select,并更新它是这样的。

 // BY id $('#select_element_selector').val('value').change(); 

另一个例子:

 //By tag $('[name=selectxD]').val('value').change(); 

另一个例子:

 $("#select_element_selector").val('value').trigger('chosen:updated'); 
 <select id="myselect"> <option value="0">sometext</option> <option value="2">Ready for Review</option> <option value="3">Registration Date</option> </select> $('#myselect').change(function() { if($('#myselect option:selected').val() == 0) { ... } else { ... } }); 

通常对我而言,首先要改变下拉的值,例如

$('#selectorForOption').attr('selected','selected')

然后触发一个变化

$('#selectorForOption').changed()

这样,任何连接到的JavaScript

也许其中一个新的jQuery版本支持选项上的点击事件。 它为我工作:

 $(document).on("click","select option",function() { console.log("nice to meet you, console ;-)"); }); 

更新:可能的用例可能如下:用户发送一个HTML表单,并将值插入到数据库中。 但是,默认情况下会设置一个或多个值,并标记此自动条目。 您还向用户显示他的input是自动生成的,但是如果他通过单击已经select的选项来确认input,则更改数据库中的标志。 罕见的起诉案件,但可能…

我知道这个代码片段用于识别一个选项点击(至less在Chrome和FF)。 此外,它的工作原理,如果该元素不在DOM负载。 当我将input的各个部分input到一个select元素时,我通常会使用它,而我不希望单击section标题。

 $(document).on('click', 'option[value="disableme"]', function(){ $('option[value="disableme"]').prop("selected", false); }); 

由于$(this)与ES6的箭头函数不正确,因为它没有和function() {} ,所以如果使用ES6语法,则不应该使用$(this)。
除了官方的jQuery的支持者 ,还有一个更简单的方法可以做到这一点。
获得选定选项的html的最好方法是使用

 $('#yourSelect option:selected').html(); 

你可以用text()或者其他任何你想要的(但是html()在原来的问题中)replacehtml() )。
只需添加事件侦听器change ,使用jQuery的简写方法change() ,即可在选定选项更改时触发代码。

  $ ('#yourSelect' ).change(() => { process($('#yourSelect option:selected').html()); }); 

如果你只是想知道option:selected的值option:selected (用户select的选项),你可以使用$('#yourSelect').val()

解决方法:

$('#select_id').on('change', (function() { $(this).children(':selected').trigger('click'); }));