我有许多列表项包含链接中的图像。单击其中一个链接时,我希望仅包含li
的rel属性,但不会跟踪click事件。在事件之后,当前在我不想要的新页面中打开链接图像。
我在我的函数中尝试了return false;
,但这不起作用(见下文)。我也在标记的实际链接上试过这个,但我宁愿不这样做,因为这不是最好的做法。
$('a.main-img').click(function (){
var liRel = $(this).closest('li').attr('rel');
var relNumber = $('#banner-holder').find('img').attr('id', liRel);
rotatePics(relNumber);
return false;
});
答案 0 :(得分:5)
请注意,preventDefault
不会阻止事件冒泡DOM并由其中一个父母执行操作。函数event.StopPropagation
将执行此操作。 PreventDefault停止链接的默认操作。返回false实际上两者都是这样,因此使用preventDefault将不是返回false的精确函数复制。
这个SO question提供了全面的贯穿。
在这种情况下可能不会有所作为,但是当它发生时,它确实让我在过去很困惑
答案 1 :(得分:2)
您应该了解event.preventDefault()
和event.stopPropagation()
答案 2 :(得分:0)
http://api.jquery.com/event.preventDefault/
阅读,这里有一个例子。
编辑:您更正的代码如下:
$('a.main-img').click(function (event){
event.preventDefault();
var liRel = $(this).closest('li').attr('rel');
var relNumber = $('#banner-holder').find('img').attr('id', liRel);
rotatePics(relNumber);
});
答案 3 :(得分:0)
尝试:
$('a.main-img').click(function (evt){ evt.preventDefault();