在单击处理程序中获取元素属性

| 预警:我是JQuery的新手。 我有一些看起来像这样的链接和列表。它们是由我的后端框架动态生成的...
<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>
我正在尝试学习JQuery和不可信的Javascript,所以我想在所有带有类“特殊”的链接上添加单击处理程序,以切换相关列表。 所以...
$(document).ready(function() {
  $(\"a.special\").click(function() {
     id = *magicFunctionToGetOwnID*
     $(convertListIDtoLinkID(id)).toggle
  })
})
我需要什么魔术功能?如果我想获得附加处理程序的事物的其他属性,该怎么办?说,将来,我添加一个“ toggle-target \”属性,我想要得到吗?     
已邀请:
不确定我是否正确,但您似乎想要这样的东西:
$(function() {
   $(\'ul:first\').delegate(\'a.special\', function( event ) {
       $(this).next(\'ul\').toggle();
   });
});
在这种情况下,您不应将事件处理程序绑定到所有节点。将一个处理程序绑定到共享的父级并利用事件冒泡就足够了。 更新资料
.delegate()
完全符合我的上述描述。它将事件处理程序绑定到节点。诀窍是,如果该事件是从委托节点的子节点上触发的,则该事件将通过冒泡DOM树来“到达”我们的目的地(除非明确禁止事件冒泡)。但是,jQuery很不错,它将始终将“ 4”绑定到目标节点(最初接收事件的节点)。 阅读:http://api.jquery.com/delegate/     
尝试
$(this).parent().find(\"ul\").toggle()
。这是不言自明的。 http://jsfiddle.net/gLu9a/     
获取元素自己的ID的方法是使用
id
属性。单击的元素在处理程序中设置为as4ѭ,因此可以使用
this.id
。 也就是说,这不是最佳技术。尽可能使用DOM关系,而不是设置ID。这将使您的代码更加灵活和直观。在这种情况下,可以使用
next
方法来获取被单击元素之后的DOM元素:
$(this).next().toggle();
有关调整选择的更多方法,请参见API“遍历”类别。     

要回复问题请先登录注册