簡體   English   中英

綁定所有孩子的點擊事件

[英]Binding click events for all children

我正在嘗試為元素的子代綁定點擊事件,如下所示:

$('#A').children().bind('click',function () {
    console.log('Hello');
});

HTML是

<select id='A'>
    <option val='1'>One</option>
    <option val='2'>Two</option>
</select>

我已經檢查了stackoverflow中的其他問題,例如jQuery中的Bind元素及其子元素,到處都提到了相同的方法。 這里有什么問題嗎?

編輯

我了解有可用的更改事件,但是請考慮當我選擇相同的選項時需要觸發更改事件的情況。

更改僅在選項從One更改為Two ,反之亦然,但是如果我選擇相同的選項,即:從Two更改為Two本身該怎么辦?

其他答復建議解決該問題。 您的代碼可能無法在嚴格的瀏覽器中運行的原因是未為option元素定義click事件 您可以使用change事件,或者如果您確實需要處理點擊,則不應使用本機的select元素。

您可能需要change()事件而不是click並且不需要與option綁定。 只要通過單擊選項更改選項選擇,事件就會觸發。

現場演示

$('#A').bind('change',function () {
    console.log('Hello');
});

您可以在此處將.change()事件用於select元素,因為更改option時將觸發.change()事件:

$('#A').on('change',function () {
    console.log('Hello');
}).change();

這是您想要的行為嗎? http://jsfiddle.net/P97ML/

$('#A').bind('change',function () {
    console.log('Hello');
});

on()select change事件一起使用。

這樣做:

$('#A').on('change',function () {
    console.log($(this).val()); // log selected option value
});

您做得正確( 在大多數情況下都可以使用 ),但是在select使用options卻不是這樣

您需要使用change事件,如果您想獲得對所選選項的引用,則可以使用:selected

$('#A').bind('change',function () {
    console.log('Hello');
    var $selectedOption = $("option:selected",this);
});

鼠標事件不會在單個選項上觸發,而是會在整個選擇菜單上觸發。 這樣:

$('#A').click(function() {
    alert('Hello');
});

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM