我期待找到需要放入jQuery的.bind
函数中的Javascript事件,以便在从<select>
元素进行选择时触发该函数。选择元素选择的Javascript事件
目前我正在使用.bind('change',function() { ...})
但我需要事件触发,当再次选择选项。
有什么建议吗?
我期待找到需要放入jQuery的.bind
函数中的Javascript事件,以便在从<select>
元素进行选择时触发该函数。选择元素选择的Javascript事件
目前我正在使用.bind('change',function() { ...})
但我需要事件触发,当再次选择选项。
有什么建议吗?
变化是不可靠的反正。阅读:
http://www.quirksmode.org/dom/events/change.html#t05
我可能会去的东西点击(但可疑,有人( - > IE)将会使您的生活困难)。或者自己建立一些东西而不选择
不会点击工作? .bind('click',function() { ...})
我曾经使用mouseup
来做这件事,并且检查了事件发生的地方。如果这是一个option
元素,我处理选择。在onchange
没有在听:在选择框
<body>
<select id="select0">
<option value="0">option 0</option>
<option value="1">option 1</option>
<option value="2">option 2</option>
</select>
<script type="text/javascript">
$('#select0').bind('mouseup', function (e) {
var src = e.target;
if (src.nodeName.toLowerCase()==='option') {
doMagicOnSelect(this);
}
});
function doMagicOnSelect(selectElem) {
console.log('current value:'+selectElem.value);
}
</script>
</body>
Total win!很好的解决方案,谢谢 – 2010-04-05 21:46:17
尽管它的天才,这种解决方案不适用于Safari(至少)!我已经选择了其他的东西,但为了防止其他人想要使用它... – 2010-04-07 11:36:49
由于事件的来源不同(例如Safari),我还没有找到解决它的方法并仍然使用上面示例的样式。传统的方法是使用“dummy”元素''并用类似'function(){var value = $(this).val ); if(parseInt(value)=== - 1){return;}/*在虚拟选项上保留*/doMagicOnSelect(this); }'。如果您确实需要我们试图模仿的功能,那么使用一些单选按钮(或普通按钮)并对其采取行动会更有意义吗? – npup 2010-04-07 21:43:42
当选定的选项被重新选择时,没有可靠的事件触发。
虽然在某些浏览器中,您可以捕获源自<option>
的事件(如果您耐心地尝试重现浏览器的选择处理,您可以使用它来捕获点击和键盘事件),但这不是标准化的,并且不起作用在IE中(因为它使用本机Windows小部件来实现选择框,但不提供这种粒度访问)。
如果您需要在再次选择相同的选项时能够重新触发事件,您所拥有的对我来说听起来不像是选择框;它也许可以更好地用一个充满按钮的脚本弹出式div来代替。 (有很多脚本可以替代脚本div的选择框,让您可以更好地控制JavaScript可用的浏览器。)
这是可能的,但它不完全受支持。下面是一个示例:
HTML
<select id="selectId">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
jQuery的
$("#selectId>option").click(function(){
alert(this.value);
});
这里是处理即平庸的方法:
<div id="dropdownWrapper">
<select id="selectId">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
</div>
JS
var clickCount_guid324fF = 0;
$("#dropdownWrapper").click(function(){
if(++clickCount_guid324fF % 2 == 0){
alert($("#selectId").val());
clickCount_guid324fF = 0;
}
});
@ChrisCantrell - 修复 – 2013-05-14 18:38:52
我目前正在通过清除下拉框选择来成功完成此操作,以便可以重新选择它。它可以让你触发功能,再次在年底前在函数中添加此:
$('select option:selected').removeAttr('selected');
这真的很聪明,谢谢! – 2014-02-15 15:49:42
绑定的变化和点击事件
$select.bind("change click", function (event) { // do something });
也许,如果他结合的情况下'
当您单击下拉菜单时也会触发,这会在此上下文中产生令人沮丧的结果。我会尝试你的选择理念理查德,把它放在一个新的答案! – 2010-04-05 21:16:44
Hmm,nope,绑定到选项元素似乎不起作用(无论如何FF3.6) – 2010-04-05 21:17:52