在jquery中禁用onclick功能父/子容器

时间:2011-04-11 20:19:46

标签: javascript jquery

当点击子容器中的图像链接时,我想要否决父div上的onclick。

我在名为“.sight-title”的容器上使用onlick来: - 使用toggleClass(“active”)更改类; - 使用ajax调用更改内容

初始状态:

<div class="sight-title" id="S2851">
  <div class="row1"></div>
  <div class="row2"></div>
</div>
点击后

    <div class="sight-title active" id="S2851"> 
  <div class="detail1">
    <a class="wikilink" target="_blank" title="en.wikipedia.org/wiki/Marollen" href="http://en.wikipedia.org/wiki/Marollen"><img src="img/contact/culisite_wikipedia.png" border="0"></a>
  </div>
  <div class="detail2"></div>
</div>

当再次点击父“.sight-title”时,它会变回初始状态。

但是当点击class =“wikilinks”时,我不希望父容器上的onclick工作。

jquery代码:当点击class =“wikilinks”时,应禁用else部分...

$(".sight-title").click(function () {
                var id=$(this).attr("id");                                      
                $("#"+id).toggleClass("active");                    
                if($(this).hasClass("active")){
                    $("#"+id).html(ajax_load);  
                    $.get(  
                     loadUrlDetail+"?id="+id+'&arrondissement='+arrondissement,  
                     {language: "php", version: 5},  
                     function(responseText){  
                         $("#"+id).html(responseText);  
                     },  
                     "html"  
                    );   
                } else {
                    $("#"+id).html(ajax_load);  
                    $.get(  
                     loadUrlTitle+"?id="+id+'&arrondissement='+arrondissement,  
                     {language: "php", version: 5},  
                     function(responseText){  
                         $("#"+id).html(responseText);  
                     },  
                     "html"  
                    );  
                }
            });

1 个答案:

答案 0 :(得分:0)

使用jQuery的unbind:http://api.jquery.com/unbind/

$('a.wikilink').click(function() {
    //do stuff
    $('a.sight-title').unbind('click');
});

编辑2:

如果在创建点击事件时链接不存在,则可能需要使用live

$('a.wikilink').live('click', function() {
    //do stuff
    $('a.sight-title').unbind('click');
});

编辑:

作为旁注,您可能希望使用jQuery's load function而不是您的GET等。

我认为你会发现它会让你的生活更轻松。

您还应该查看您的选择器。您使用$("#"+id)选择的对象与$(this)选择的对象完全相同。