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