2014-02-17 115 views
1

那么,我有一个很常见的情况:当选择html选项选择做一些东西。有很多类似的问题,答案始终是使用change事件。就像这个例子中的jsfiddle一样。这工作正常,但是...问题是我想要do stuff即使再次选择相同的选项。不是在选项更改时,而是当选择!例如在this实际示例中 - 文档准备就绪时,将选择空选项。当我选择空选项时,在这种情况下,我将看不到警报,因为select实际上没有更改。但我需要看到那个警报。我只是好奇,有一些select事件或(如果没有)什么是实施这种行为的正确方法?JQuery选项选择HTML元素的选择事件?

我可以这样做:

$('select.my-select option').click(function() { 
    var val = $(this).val(); 
    alert(val); 
}); 

但不起任何作用。我没有得到预期的行为。我想:
歌剧19.0.1326.63
IE 11.0.9600.16518
的Chrome 32.0.1700.107米
火狐27.0.1

还我旧的浏览器尝试这种代码,如Opera 12,并且完美运行。但它在上面列出的浏览器中不起作用。

+0

当用户选择相同的选项时,您需要执行什么操作?你以前执行的应该仍然是真实的。 – tymeJV

+0

@tymeJV,我想每次选择选项时都要提醒所选选项的值,点击,我猜。 – Dmytro

+0

$('select.my-select')。点击 - 你没有点击选项 – matpol

回答

0

试试这个,而不是

$('select.my-select').click(function() { 
    var val = $(this).find('option:selected').val(); 
    alert(val); 
}); 
+0

它有完全相同的行为,在[我的例子](http://jsfiddle.net/xLTED/) – Dmytro

+0

真?它适用于FF和Chrome。尝试这个小提琴http://jsfiddle.net/xLTED/2/ – anurupr

+0

它的工作原理,是的,但它只是在文档准备好后选择'1'选项(在我的情况下它是'空'选项)时不起作用(当它已经被选中时)。你没有得到警觉。我需要这个警报。第二个jsfeedle会在每次点击'select'时发出警报,但是当我选择它时不会发出警报。 – Dmytro

0

Try this

它实现了什么,我知道你想,它处理的第一选择,也就是默认情况下完成的。

基本上你做的默认选择搜索时,用户就真的选择了一个前:

$('.my-select option').each(function() { 
    var text = $(".my-select option:selected").text();   
    if (this.selected){  
     alert(text); 
    } 
}); 

然后,任何选择是默认的,因为你加selected属性:

<option value="3" selected>Option 3</option> 

编辑:请注意,您显示使用selectedselected="selected",虽然它是布尔值,说selected=true是错误的。

+0

不,不是我想要实现的...... 。我想我应该提供更详细的解释... – Dmytro

+1

它处理'不选择时改变,但是当它被选择'参数。例如,第一个选项不是由用户选择的,而是由程序选择的。 –

+1

告诉我我写的是什么,然后告诉我你想要什么,应该做什么之间的差异。 –