2010-05-26 4 views
1

Допустим, мы имеем следующую разметку:Jquery Игнорировать событие

<span href="">Text <a href="">Link</a></span> 

У нас есть события, связанные с обоими элементами. Как сделать так, что когда я нажимаю на тег привязки, событие на родительском элементе не будет запущено? Я попытался использовать метод JQuery stopPropagation(), но все равно не повезло. Есть предположения? Благодарю.

ответ

2

Как вы используете stopPropagation()? Нечто подобное должно работать:

$("a.something").click(function(event){ 
    event.stopPropagation(); 
    window.location.href = '/your/destionation.html'; 
}); 
2

Не знаю, почему stopPropagation() не работает для вас. Учитывая ваш пример HTML, следующий код функционирует правильно, поскольку событие на span не запускается.

$('span').click(function() { 
    alert('span'); 
}); 

$('a').click(function(e) { 
    e.stopPropagation(); 
    alert('a'); 
}); 

Если вы используете live() связать обработчик событий, то вы будете иметь проблемы.

+0

У меня есть чувство stopPropagation() not e.stopPropagation() использовался .. –

+0

Я пробовал использовать его таким же образом, и, возможно, мне следовало попробовать еще раз. Кстати, есть строка «e.preventDefault()», я не уверен, что это имеет какое-то отношение к этой проблеме, хорошо? Благодарю. – HealthWarning

+0

@HealthWarning - Используете ли вы 'live()' для привязки событий? 'e.preventDefault()' отключает поведение элемента по умолчанию. Например, если вы не хотели следовать за 'href' в элементе' a', вы использовали бы его, чтобы отключить поведение 'a'. – user113716

Смежные вопросы