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- может кто-нибудь отредактировать мою скрипку - он чувствует себя немного грязным)