Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在单击处理程序中获取元素属性_Javascript_Jquery_Dynamic - Fatal编程技术网

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

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="

预先警告:我是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>
我需要的神奇功能是什么?如果我想获取我要附加处理程序的对象的其他属性呢?比方说,在将来,我添加了一个“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')