отключение родительского / дочернего контейнера функциональности onclick в jquery

#javascript #jquery

#javascript #jquery

Вопрос:

Я хочу отменить onclick для родительского div-файла при нажатии на ссылку на изображение в дочернем контейнере.

Я использую onlick для контейнера с именем «.sight-title», чтобы: — изменить класс с помощью toggleClass(«активный»); — изменить содержимое с помощью вызова 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: часть else должна быть отключена при нажатии class=»wikilinks» …

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

Ответ №1:

Используйте функцию unbind в jQuery: http://api.jquery.com/unbind /

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

ПРАВКА 2:

Возможно, вам придется использовать live вместо этого, если ссылка не существует при создании события click для нее.

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

Редактировать:

В качестве дополнительного примечания, вы можете захотеть использовать функцию загрузки jQuery, а не ваши GETs и тому подобное.

Я думаю, вы обнаружите, что это упрощает вашу жизнь.

Вам также следует посмотреть на свои селекторы. Вы выбираете тот же объект, с которым работаете, $("#" id) вместо того, чтобы просто выполнять $(this) .

Комментарии:

1. похоже, не работает … я поместил это перед частью $ («.sight-title»).click

2. Вы включили недостаточно, чтобы действительно можно было определить, но если ваша ссылка .wikilink не просто скрыта, а загружена, используйте вместо этого live: $('a.wikilink').live('click', function() { ... });