Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 - Fatal编程技术网

Javascript 禁用父块中的所有链接,但不禁用其子块中的任何链接

Javascript 禁用父块中的所有链接,但不禁用其子块中的任何链接,javascript,jquery,Javascript,Jquery,我有一个部门在上课。html的结构如下所示 <div class="wrapper"> <div class="header"> <a href="http://mysite.com">LOGO</a> </div> <div class="nav"> <!-- Anchors --> </div> <div class="container"&

我有一个部门在上课。html的结构如下所示

<div class="wrapper">
   <div class="header">
     <a href="http://mysite.com">LOGO</a>
   </div>
   <div class="nav">
     <!-- Anchors -->
   </div>
   <div class="container">
     <!-- Other contents anchors etc. -->
   </div>
</div>

我们可以不使用循环进行检查就完成吗?或者,使用循环和不使用循环会影响相同的结果

试试这样的方法:

$('.wrapper').on('click', function(e){
    var $target = $(e.target);
    if(!$target.parents('.nav')){
         e.preventDefault();
    }
})

您可以使用以下命令以包含在另一个div中的、不具有类nav的所有锚点为目标,这些锚点是wrapper的后代:

试一试

试试这个

$('.wrapper div:not(".nav") a').removeAttr('href');
请看这里:

代码

像这样选择它们

$('div.wrapper > div:not(".nav") a')

样本不一样,只是相似:

基本样本哈利芬的答案是这样的 最近的功能比父母更有效


$'.wrapper nav'.bind'click';是的,这是真的。过滤到“a”标记也会加快脚本的速度。
$('.wrapper').find('a').not($('.wrapper').find('.nav a')).on('click', function(e){
    e.preventDefault();
})
$('.wrapper div:not(".nav") a').removeAttr('href');
$(".wrapper div:not('.nav') a").prop("href", "#"); 
$('div.wrapper > div:not(".nav") a')
$('.wrapper').on('click', 'a', function(e){  
    if(!$(this).closest('.nav')){  
        e.preventDefault();  
    }  
})