У меня есть часть HTML, как:
<a href="http://site.com">
<span id="a">Click here to link to site.com</span>
<span id="b">Click here not to link to site.com</span>
</a>
Не меняя структуру DOM, просто используя JavaScript, как я могу запретить привязку span#b
от ссылки на сайт.com при нажатии?
Я использую jQuery в этом проекте, поэтому лучше реализовать его с помощью jQuery.
Благодаря,
Обновить:
Извините, я нашел ответы, которые return false
или .stopPropagation()
не работает в конкретной ситуации. Поэтому я добавил более подробную информацию:
Это дерево DOM, жаль, что мне нужно скрыть некоторые личные данные:
Вот связанный код:
$('.span_wrapper').click(function(e){
e.stopPropagation();
alert('clicked');
return false;
});
Он по-прежнему ссылается на страницу на значение href внешнего тега <a>
.
Обновление: вот видео, объясняющее, что я пытался:
Просто запретите событие размножаться /#b
элемента #b
до элемента <a>
:
$('#b').on('click', function(e) {
e.preventDefault();
// any other code to react to this click here
});
Там также сокращенная версия для достижения того же самого (если у вас нет другой логики):
$('#b').on('click', false);
Из документов:
Значение
false
также допускается как сокращение для функции, которая простоreturn false
.
Вызов return false
из обработчика события jQuery является эквивалентом вызова как event.stopPropagation()
и event.preventDefault()
. Преимущество вызова e.preventDefault()
в начале функции состоит в том, что он все равно будет препятствовать соблюдению ссылки, даже если есть ошибки, вызванные выполнением остальной функции обработчика.
ПРИМЕЧАНИЕ. Как всегда при работе с элементами вам необходимо убедиться, что они действительно существуют, прежде чем пытаться это сделать. Это либо означает готовый обработчик DOM, либо перемещает сценарий в конец HTML-документа непосредственно перед </body>
.
что-то вроде этого будет работать, я думаю
$("a #b").click(function(){return false});
Остановить распространение, связанное с событием click
чтобы span#b
$('#b').click(function(e) {
e.stopPropagation();
return false;
});