0

私はラッパーと言うクラスを持つdivを持っています。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>

クラス「nav」を持つdivのアンカーを除いて、ラッパー内のすべてのリンクを無効にする方法はありますか? これを行う効率的な方法は何ですか?

次のコードを使用してすべてのリンクを無効にしています -

$('.wrapper').find('a').die('click');
$('.wrapper').find('a').unbind('click');
$('.wrapper').find('a').removeAttr('onclick');
$('.wrapper').find('a[href^="javascript"]').removeAttr('href');

ループを使用してチェックを行わずに実行できますか? または、ループを使用して、ループを使用せずに、同じに影響しますか?

4

7 に答える 7

2

HarryFink の答えのベース 1 は、このようなものを使用します
( closestfunction はより効果的ですparents)

$('.wrapper').on('click', 'a', function(e){  
    if(!$(this).closest('.nav')){  
        e.preventDefault();  
    }  
})
于 2013-06-21T10:24:47.553 に答える
1

以下を使用して、 クラス を持たない別の に含まれる のanchors子孫であるall をターゲットにすることができます。wrapperdivnav

$('.wrapper div:not(".nav") a')
于 2013-06-21T10:12:06.593 に答える
1

試す

$('.wrapper').find('a').not($('.wrapper').find('.nav a')).on('click', function(e){
    e.preventDefault();
})
于 2013-06-21T10:12:38.053 に答える
1

これを試して、

$('.wrapper div:not(".nav") a').removeAttr('href');

働くフィドル

于 2013-06-21T10:12:50.393 に答える
1

次のようなことを試してください:

$('.wrapper').on('click', function(e){
    var $target = $(e.target);
    if(!$target.parents('.nav')){
         e.preventDefault();
    }
})
于 2013-06-21T10:11:12.700 に答える