防止单击事件jquery

时间:2011-12-11 14:21:03

标签: jquery events function onclick

我有许多列表项包含链接中的图像。单击其中一个链接时,我希望仅包含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;

});

4 个答案:

答案 0 :(得分:5)

请注意,preventDefault不会阻止事件冒泡DOM并由其中一个父母执行操作。函数event.StopPropagation将执行此操作。 PreventDefault停止链接的默认操作。返回false实际上两者都是这样,因此使用preventDefault将不是返回false的精确函数复制。

这个SO question提供了全面的贯穿。

在这种情况下可能不会有所作为,但是当它发生时,它确实让我在过去很困惑

答案 1 :(得分:2)

您应该了解event.preventDefault()event.stopPropagation()

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();