Javascript 在单击处理程序中获取元素属性
预先警告:我是JQuery的新手 我有一个类似这样的链接和列表的集合。它们是由我的后端框架动态生成的Javascript 在单击处理程序中获取元素属性,javascript,jquery,dynamic,Javascript,Jquery,Dynamic,预先警告:我是JQuery的新手 我有一个类似这样的链接和列表的集合。它们是由我的后端框架动态生成的 <ul> <li> <a id="link1" class="special" href="#">...</a> <ul id="list1"> ... </ul> </li> <li> <a id="link2" class="special" href="
<ul>
<li>
<a id="link1" class="special" href="#">...</a>
<ul id="list1"> ... </ul>
</li>
<li>
<a id="link2" class="special" href="#">...</a>
<ul id="list2"> ... </ul>
</li>
<li>
<a id="link3" class="special" href="#">...</a>
<ul id="list3"> ... </ul>
</li>
</ul>
我需要的神奇功能是什么?如果我想获取我要附加处理程序的对象的其他属性呢?比方说,在将来,我添加了一个“toggle target”属性,我想得到它?尝试$(this).parent().find(“ul”).toggle()
。这是不言自明的
试试$(this.parent().find(“ul”).toggle()
。这是不言自明的
我不确定你说的对不对,但看起来你想要这样的东西:
$(function() {
$('ul:first').delegate('a.special', function( event ) {
$(this).next('ul').toggle();
});
});
在这种情况下,不应该将事件处理程序绑定到所有节点。将一个处理程序绑定到共享父级并利用事件冒泡就足够了
更新.delegate()
正是我上面所描述的。它将事件处理程序绑定到一个节点。诀窍是,如果该事件是在委托节点的子节点上触发的,那么这些事件将通过冒泡DOM树“到达”我们的目的地(除非明确禁止事件冒泡)。但是,jQuery很好,它总是将这个
绑定到目标节点(最初接收事件的节点)
读一读:不确定我是否理解正确,但看起来你想要这样的东西:
$(function() {
$('ul:first').delegate('a.special', function( event ) {
$(this).next('ul').toggle();
});
});
在这种情况下,不应该将事件处理程序绑定到所有节点。将一个处理程序绑定到共享父级并利用事件冒泡就足够了
更新.delegate()
正是我上面所描述的。它将事件处理程序绑定到一个节点。诀窍是,如果该事件是在委托节点的子节点上触发的,那么这些事件将通过冒泡DOM树“到达”我们的目的地(除非明确禁止事件冒泡)。但是,jQuery很好,它总是将这个
绑定到目标节点(最初接收事件的节点)
阅读:获取元素自身id的方法是使用
id
属性。在处理程序中,单击的元素被设置为this
,因此您可以使用this.id
也就是说,这不是一种最佳技术。尽可能使用DOM关系,而不是设置ID。这将使您的代码更加灵活和直观。在本例中,您可以使用该方法获取所单击元素后面的DOM元素:
$(this).next().toggle();
有关调整选择的更多方法,请参见。获取元素自身id的方法是使用
id
属性。在处理程序中,单击的元素被设置为this
,因此您可以使用this.id
也就是说,这不是一种最佳技术。尽可能使用DOM关系,而不是设置ID。这将使您的代码更加灵活和直观。在本例中,您可以使用该方法获取所单击元素后面的DOM元素:
$(this).next().toggle();
有关调整选择的更多方法,请参阅。美元('a.special')之间的区别是什么。单击(函数(){…})和美元('ul:first')。委托('a.special',函数(事件){…})?我不太明白你的意思…啊。我现在明白了。你能解释一下为什么这比仅仅使用美元('a.special')更有利吗?非常感谢!:)$('a.special').click(function(){…})和$('ul:first').delegate('a.special',function(event){…})之间有什么区别?我不太明白你的意思…啊。我现在明白了。你能解释一下为什么这比仅仅使用美元('a.special')更有利吗?非常感谢!:)我的问题措辞不太好。下面的答案解释了我试图很好地完成的任务。:)多亏了他们的指导,我才明白我想学的东西。要获取ID,它将是
$(this).attr('ID')
,如果我后来添加了一个toggle target属性,它将是$(this).attr('toggle-target')
我的问题措辞不太好。下面的答案解释了我试图很好地完成的任务。:)多亏了他们的指导,我才明白我想学的东西。要获取ID,它将是$(this).attr('ID')
,如果我后来添加了一个toggle target属性,它将是$(this).attr('toggle-target')