#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() { ... });