0

我们如何从父母回调到同一个孩子?我有如下给出的场景:
HTML

<div id="abc123">
<ul id="pqr">
    <span class="abc">ChildA</span>
    <span class="xyz">ChildB</span>
</ul>

javascript

$(document).ready(function()
{
   $('.abc, .xyz').parent().click(function()
   {
      alert($(this).children().attr("class"));
   });
});  

HTML 输出:

ChildA ChildB  

每当我点击childA时,它会给我正确的输出为abc但是当我点击childB时,它再次定位到第一个孩子并将其属性设为abc
有没有办法定位到我点击的同一个孩子?

4

6 回答 6

2

尝试这个

$(document).ready(function()
{
   $('.abc, .xyz').click(function()
   {
      alert($(this).attr("class"));
   });
}); 
于 2013-10-28T11:15:28.597 回答
2

您可以通过引用启动事件的 DOM 元素来执行此操作。:

$('.abc, .xyz').parent().click(function (e) {
    alert($(e.target).attr("class"));
});

演示:小提琴


event or e实际上是event objectand 保证被传递给事件处理程序。原始事件的大多数属性都被复制并规范化到新的事件对象。

e.target是主要事件属性之一,它是为事件注册的元素或其后代。

于 2013-10-28T11:19:35.910 回答
0
$(document).ready(function()
{
   $('.abc, .xyz').parent().click(function(event)
   {
      alert(event.target.attr('class'));
   });
});  
于 2013-10-28T11:18:45.710 回答
0

这个怎么样?

$("#pqr span").click(function() {
    alert($(this).attr("class");
});
于 2013-10-28T11:18:49.570 回答
0

parent().children()返回一个包含两个元素的数组(ChildA 和 ChildB)

当您在该数组上调用方法时,它始终使用第一个元素(ChildA)

将单击侦听器应用于两个元素并从您单击的对象中获取类 ( this),不要尝试通过父项和子项获取它。

$(document).ready(function()
{
   $('.abc, .xyz').click(function()
   {
      alert($(this).attr("class"));
   });
}); 
于 2013-10-28T11:19:00.250 回答
0

在父级上绑定一个单击事件,然后查找其子级的属性将为您提供与获得确切输出相同的结果,您可以比较类名或通过 id 比较它们。

尝试这个

$(document).ready(function()
{
   $('#pqr').find('span').click(function()
   {
      alert($(this).attr("class"));
   });
});  
于 2013-10-28T11:20:15.140 回答