我希望找到我需要放入jQuery的.bind
函数的Javascript事件,以便在从<select>
元素进行选择时触发该函数。
目前我正在使用.bind('change',function() { ...})
,但我需要在再次选择所选选项时触发事件。
有什么建议吗?
答案 0 :(得分:4)
我目前正在通过清除下拉框选项成功完成此操作,以便可以重新选择它。它允许您通过在结束前在函数中添加它来再次触发该函数:
$('select option:selected').removeAttr('selected');
答案 1 :(得分:2)
无论如何,改变选择框是不可靠的。阅读:
http://www.quirksmode.org/dom/events/change.html#t05
我可能会点击一下(但要怀疑,有人( - &gt; IE)会让你的生活变得困难)。或者在没有选择的情况下自己构建一些东西。
答案 2 :(得分:2)
这是可能的,但并不完全支持。这是一个示例:
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;
}
});
答案 3 :(得分:0)
不会点击工作? .bind('click',function() { ...})
答案 4 :(得分:0)
我曾经使用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>
答案 5 :(得分:0)
重新选择所选选项时,不会触发可靠事件。
虽然在某些浏览器上你可以捕获来自<option>
的事件(如果你有耐心尝试重现浏览器的选择处理,你可以使用它来捕获点击和键盘事件),这是不标准化的在IE中工作(因为它使用本机Windows小部件来实现选择框,而不提供那种细粒度访问)。
如果你需要能够在再次选择相同的选项时重新启动一个事件,那么你所拥有的对我来说听起来并不像一个选择框;它可能更好地替换为带有按钮的脚本弹出式div。 (有很多脚本可以替换脚本div的选择框,以便更好地控制JavaScript可用的浏览器。)
答案 6 :(得分:0)
绑定更改并单击事件
$select.bind("change click", function (event) { // do something });