Jquery preventDefault(返回false;)始终不起作用

时间:2015-11-20 15:41:55

标签: javascript jquery

我有这段代码,我无法一直阻止默认链接事件。它的工作时间有90%,但剩下的10%我的代码没有运行,没有收到任何错误信息,并在我的网址末尾添加#。我的标签上有#on my href。

我使用.on(),因为有时在文档准备好后加载元素。我使用.off()因为在我使用它之前,有时当我点击它时会触发不止一次。奇怪的部分有时候。我不明白代码有时可以工作,有时候也不行。不应该一直都是同样的结果?

对很多评论感到抱歉。

这是我的完整jquery代码:

public class MyObject {
    private String name;
    private int id;
    private long time;

}

public static Comparator<MyObject> COMPARE = new Comparator<MyObject>() {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return (int) (o1.time - o2.time);
    }
};

public PriorityQueue<MyObject> queue = new PriorityQueue<>(COMPARE);

2 个答案:

答案 0 :(得分:0)

你显然有很多问题,其中一些是我们无法帮助的,因为你没有包含相关的代码。

  • 您的javascript代码有时会附加事件处理程序吗?执行不止一次。
  • 您正在将事件附加到运行时可能不存在的元素上(您在插入时是否正在执行事件处理程序附加代码?)
  • 您将不加选择地删除所有事件处理程序,可能是不属于您自己的事件。

第二和第三个问题很简单。不要使用

$(".comment-remove").off().on("click", function(event){ 

使用

$(document).on('click','.comment-remove',function(event){

我还建议不要使用serial属性,而是使用data-serial代替var tutorial_serial = $(this).parent().parent().parent().attr("id");使用var tutorial_serial = $(this).closest('.tutorial').attr("id");这样更易于维护的内容。

答案 1 :(得分:-1)

删除锚点上的href属性,以防止它在您的网址末尾添加#:

<a href="#" serial="'.$data_id.'" class="comment-remove" '.$hidden_remove.' >Remove</a>

我建议使用:

$("body").on("click",".comment-remove",function(){...})

要防止事件多次触发,因为您要在主体上设置一次侦听器,而不是on,根据需要可以或不能将ID分配给您的ID,具体取决于DOM中的元素是否存在该行已经运行。

相关问题