Jquery: сохранить ссылку <a>в интерактивном режиме
То, что я хочу сделать, - это не нажимать на div, если пользователи нажимают на ссылку внутри этого div.
но без использования .click(function() {}); по ссылке.
Здесь код:
$('div.feature').click(function() { window.location = $(this).attr('rel');});
здесь пример содержимого div:
<div id="feature" rel="urlnumberone">
some text
<a href="javascript:topicchange(this);" class="insideLink">Link</a>
</div>
И по какой-то определенной причине я не могу использовать что-то вроде этого
$('.insideLink').click(function(event){
event.stopImmediatePropagation();
});
Мне нужно использовать эту функцию "change()", есть ли способ предотвратить распространение события?
Спасибо!
Ответы
Ответ 1
Пример, который вы предоставили, должен работать, за исключением того, что ваш div имеет идентификатор "функции", но в js вы нацеливаете класс. jsfiddle.net/SNP3K.
<div id="feature" rel="urlnumberone">
some text
<a href="#" class="insideLink">Link</a>
</div>
.
$('div#feature').click(function() {
alert('div');
});
$('.insideLink').click(function(event){
event.stopImmediatePropagation();
alert('link')
});
Ответ 2
<div id="feature" onclick="location.href='index.php';">
<a href="anotherpage.php">link</a>
</div>
Просто, как это!
Ответ 3
$(document).ready(function() {
$('div#feature').click(function() {
alert('div');
});
$('div#feature a').click(function(evt) {
evt.stopPropagation();
});
});
function topicchange(targ) {
alert('link');
return false;
}
Разрешено ли это? Функция изменения темы вызывается непосредственно из href, но событие click не допускается к распространению. Или, но все происходит в разделе обмена?
Ответ 4
Согласно http://api.jquery.com/bind/, event.stopPropagation должен разрешить выполнение других обработчиков событий в целевом объекте. Вы все еще можете выполнить из Href, но вы также можете обрабатывать по умолчанию щелчок по пузырьку в div, игнорируя его.
Полная демонстрация по адресу: http://jsfiddle.net/leonxki/qrFQM/
Отрывок:
function topicChange() {
alert('Message from Link: After the div mouse event, I can execute');
return false;
}
$('div#feature').click(function(evnt) {
var $originatingTarget = $(evnt.target);
if ($originatingTarget && $originatingTarget.is('.insideLink')) {
alert('Message from Div: Ahh! You clicked on Link...');
evnt.stopPropagation(); // Allows other handlers on the event.target to be executed.
}
});
Очень похоже на @shanethehat.
Престижность к @shanethehat за просьбу о разъяснении.
(BTW- может кто-нибудь отредактировать мою скрипку - он чувствует себя немного грязным)