2012-04-24 107 views
11

当我点击一个选择选项,我正在处理Changed事件。模拟鼠标点击与jQuery的选择选项

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

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

我可以在选项上触发“更改”,并点击我的处理程序,但列表中的选项没有被选中,就像点击一样。

对此提出建议?

更新: 查询选择代码工作得很好 - 感谢您的答复。问题是我的(当然)。我在Jquery.Ajax Success:block之外选择了代码,所以我认为它是有效的,但是ajax响应代码正在缓存它。

+1

您是否在选择该选项后尝试使用.focus()? – nnnnnn 2012-04-24 23:42:26

+0

nope尚未尝试关注。我应该提到,这是一个列表框而不是组合 - 所以具有多个属性。 – R3lm 2012-04-24 23:45:37

回答

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

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

,不要忘记使用清除其他选项中选择属性:

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

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

至少在IE中,使用multiple = multiple属性时,选中的设置似乎不会像选中时突出显示该选项。 – R3lm 2012-04-24 23:46:46

+0

它应该工作。这里有一个例子:http://stackoverflow.com/q/2179529/1262700 – 2012-04-24 23:53:32

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

为我工作。请参阅http://jsfiddle.net/TZVyh/1/

+0

我会尝试它并更新谢谢! – R3lm 2012-04-24 23:50:16

+0

这很好奇。运行此元素后,元素周围会有一个非常浅的灰色框 - 已选中,但未用鼠标单击时突出显示(蓝色)。列表框具有焦点,当我向上/向下箭头时,选定元素上方或下方的选项随后将被选中,并且突出显示蓝色,并带有我想要的样式! – R3lm 2012-04-24 23:59:21

+0

你使用什么浏览器? – 2012-04-25 08:55:27

0

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

我不完全了解你要做什么,但$('select').change()的作用类似于$('select option').click()。在change事件$(this).val()是所选选项的值以及click事件中的值。

在这两种情况下,你可以选择与$('select[value="yourvalue"]').prop('selected', true);

+0

我应该详细说明。当我点击选项时,会发生两件事:选项元素以蓝色突出显示(显然某种样式更改)。其次,变更事件被解雇。在代码中的选项上设置'selected'属性不会应用与点击时相同的视觉样式。 – R3lm 2012-04-24 23:48:32

+0

'选择'是棘手的,你不能设计他们,他们依赖于操作系统。 – elclanrs 2012-04-24 23:50:35

5

一个选项,我用了jQuery数据表插件ColumnFilterWidgets工作,我需要做下面的执行筛选器操作(基于elclanrs和福斯特的答案):

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

这应该是被接受的答案,因为它是唯一一个“模拟”与用户交互相同的确切行为。 – 2015-05-19 03:53:56