2012-07-29 59 views
2

我對jQuery很新。以下是我的代碼的一部分JQuery:獲得對象內部跨度

<div class = 'buttons'> 
    <span> 
    <input type='button' value='BUTTON1' id='button1'> 
    </span> 
    <span> 
    <input type='button' value='BUTTON2' id='button2'> 
    </span> 
</div> 

使用jquery,我想打印按鈕的id點擊。我試過以下內容:

$(".buttons > span").click(function() { 
    alert("YOU CLICKED" + this.id); 
}); 

但我認爲這是指的跨度對象。這很奇怪,因爲跨度對象如何發生點擊事件?或所有的jQuery對象有「點擊」? 如何獲得跨度中按鈕的ID?

謝謝。

+0

幾乎所有的DOM元素允許鼠標事件處理。如果將處理程序綁定到「span」元素,則this將引用觸發事件處理程序的DOM元素。 – 2012-07-29 02:07:35

回答

3

這個綁定是什麼?

$(".buttons > span > input").click(function() { 
    alert("YOU CLICKED" + this.id); 
}); 
1
$(".buttons > span").click(function() { 
    alert("YOU CLICKED" + $('input[type=button]',this).prop('id')); 
}); 

,或者你可以在事件按鈕本身

$(".buttons > span > input[type=button]").click(function() { 
    alert("YOU CLICKED" + this.id); 
}); 
+0

逗號是做什麼的? $('input [type = button]',this) – 2012-07-29 04:31:40

+0

@SquallLeohart逗號分隔參數,無論如何,第二個參數是要搜索的上下文,通常是它的文檔根目錄,但是如果指定上下文,則從該元素執行搜索。所以'$('input [type = button]',this)'意味着選擇所有類型按鈕的輸入,它們是this元素的後代。請參閱http://api.jquery.com/jQuery/ – Musa 2012-07-29 04:39:36

+0

它選擇類型按鈕的所有輸入?那麼它如何知道我點擊哪個按鈕來打印ID? – 2012-07-29 04:43:06

4

這裏是另一種方式來做到這一點通過捕獲事件的目標元素:

$(".buttons > span").click(function (e) { 
    alert("YOU CLICKED" + e.target.id); 
});