Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 jQuery在部门内部授权>;divs>;a还:(_Javascript_Jquery_Html_Navigation_Delegation - Fatal编程技术网

Javascript jQuery在部门内部授权>;divs>;a还:(

Javascript jQuery在部门内部授权>;divs>;a还:(,javascript,jquery,html,navigation,delegation,Javascript,Jquery,Html,Navigation,Delegation,html: 代表也一样。有没有聪明的方法可以忽略b NB///动态添加和分离div中的链接/// ty如果你知道这只是直系后代的话,试试看 $('#a').delegate('a', 'click', function(){ //do stuff }); 如果你知道你想忽略b的孩子,试试看 $('#a').delegate('#a>a', 'click', function(){ alert('a') }); 编辑:这按预期工作。您的委托()调用将为#a下与选择器a匹配的所有子级设置事

html:

代表也一样。有没有聪明的方法可以忽略b

NB///动态添加和分离div中的链接///


ty

如果你知道这只是直系后代的话,试试看

$('#a').delegate('a', 'click', function(){ //do stuff });
如果你知道你想忽略b的孩子,试试看

$('#a').delegate('#a>a', 'click', function(){ alert('a') });

编辑:

这按预期工作。您的
委托()
调用将为
#a
下与选择器
a
匹配的所有子级设置事件处理程序

如果您正试图为特定元素设置处理程序,请执行该操作

$('#a').delegate('a:not(#b>a)', 'click', function(){ alert('a') });

此外,您的html非常糟糕。请确保关闭标记实际关闭。

委托方法中的第一个字段是选择器。现在,您正在选择所有锚。请改用id。

$('#a0').click(function(){ ... });

谢谢:),从来没有让我做过选择,不用担心。仅供参考,我会考虑使用类来标识您的元素,因为它使以后的重构变得更容易(而且这一点更明显),值得注意的是,尽管jQuery 1.7+支持
.delegate()
,但新的
.on()
函数将取代它,因此更能证明未来(1.7通常也提高了事件绑定的性能)。语法几乎相同,只是事件('click')和选择器('a'在示例中或Luke建议的变体)相反。.on()与.delegate():性能速度和浏览器兼容性如何?.on()本质上是.bind()和.delegate()合并成一个,由于重构,性能的提高是巧合的。.on()将更快(仅仅因为它被重构),并且两者都应该具有相同的跨浏览器兼容性。
.click()
别名将侦听器设置为self。大多数人使用
.delegate()
/
.on()
(作为委派工具)因为他们不想这样。@GregPettit这不是我读他的问题的方式,但是如果我们假设
aX
锚也动态添加,那么是的。他希望它对他添加的任何“a”都有效,除了在#b中的,然后他可以将它们分组到一个类中。完全正确:)我甚至对这个问题做了评论。如果你的答案中包含你的建议,而不是你原来的错误答案,这可能是个好主意。我不认为,我的答案会误导任何人。无论如何,每个人都有自己的观点。我尊重你的:)不,不,不,我的意思是我认为你在分析问题时被误导了(可能没有阅读NB),而不是完全错了:)基本上,我不认为你回答了他的需要-不是因为你不知道你在说什么,但很可能是因为您误读了它——因此,正如我在其他地方所评论的那样,“误导”而不是“不正确”,他希望本质上是“实时”事件(因此,委托给父级),这样他可以在以后动态添加元素,而不必绑定它们的事件。
$('#a0').click(function(){ ... });
$('#a').on('click', '#a0', function(event) {
    alert(event.target.id);
});