2012-07-29 46 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); 
});