选择元素选择的Javascript事件

时间:2010-04-05 20:56:17

标签: javascript jquery html events

我希望找到我需要放入jQuery的.bind函数的Javascript事件,以便在从<select>元素进行选择时触发该函数。

目前我正在使用.bind('change',function() { ...}),但我需要在再次选择所选选项时触发事件。

有什么建议吗?

7 个答案:

答案 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   });