问题 模拟鼠标点击选择选项与jquery


当我单击Select选项时,我正在处理Changed事件。

我想在代码中模拟这个,并让它看起来像用户点击选项时一样。

到目前为止,在选项上设置'selected'属性并不会像点击它时那样突出显示它。

我可以在选项上触发'更改'并点击我的处理程序,但是列表中的选项不会被选中,就好像被点击一样。

建议?

更新: 查询选择代码工作正常 - 感谢您的回复。问题是我的(当然)。我在Jquery.Ajax Success:block之外有选择代码,所以我认为它正在工作,但是ajax响应代码正在使用它。


9463
2018-04-24 23:37


起源

选择选项后,您是否尝试过.focus()? - nnnnnn
nope还没试过专注。我应该提一下,这是一个列表框而不是组合 - 所以使用multiple属性。 - R3lm


答案:


​$('option[value="4"]').attr('selected', 'selected').parent().focus();​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

适合我。看到 http://jsfiddle.net/TZVyh/1/


5
2018-04-24 23:47



我会试试并更新谢谢! - R3lm
这很奇怪。运行此元素后,元素周围有一个非常浅灰色的框 - 它被选中,但不会突出显示为用鼠标(蓝色)单击它时。列表框具有焦点,当我向上/向下箭头时,然后选择所选元素上方或下方的选项,并突出显示为蓝色,具有我想要的样式! - R3lm
你使用的是什么浏览器? - Ben Foster


我正在使用jquery datatable插件ColumnFilterWidgets,我需要执行以下操作来执行过滤器操作(基于elclanrs和Ben Foster的答案):

$("option").attr('selected', 'selected').parent().focus();
$("option").parent().change();

5
2018-04-19 20:53



这应该是公认的答案,因为它是唯一一个“模拟”与用户交互相同的行为。 - Ivan Carosati


$("option").attr("selected","selected"); 

将选择您想要的选项。然后您可以触发该事件。

并且不要忘记使用以下方法清除其他选项的选定属性:

$("option").attr("selected",null);

要么

$("option").removeAttr("selected");

0
2018-04-24 23:42



至少在IE中,如果使用multiple = multiple属性,则选中的设置似乎不会突出显示单击时的选项。 - R3lm
它应该工作。这是一个例子: stackoverflow.com/q/2179529/1262700 - Taha Paksu


...但是未选择列表中的选项,就像单击一样。

我不完全明白你想做什么但是 $('select').change() 类似于 $('select option').click()。在里面 change 事件 $(this).val() 是所选选项的值以及 click 事件。

在任何一种情况下,您都可以选择一个选项 $('select[value="yourvalue"]').prop('selected', true);


0
2018-04-24 23:47



我应该详细说明。当我点击该选项时,会发生两件事:选项元素突出显示为蓝色(显然是某种样式更改)。其次,更改事件被触发。在代码中为选项设置“selected”属性不会应用与单击时相同的视觉样式。 - R3lm
selects 很棘手,你不能设计它们,它们依赖于操作系统。 - elclanrs