我期待找到需要放入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