-1

我正在尝试编写一些 JQuery,以便每当用户单击链接(即a标签)时,都会发出警报,并且链接实际上不会跳转到另一个地方。

$(document).ready(function() { 
    $(document.body).on('click',"a",function(event){ 
        event.preventDefault();
        alert("Hello!"); 
    });  
});

此文件中的链接实际上并不在 HTML 代码中,而是由其他一些 JavaScript 插入的。警报有效,但不会阻止默认设置。如何解决这个问题?

4

1 回答 1

2

只是为了结束这个问题,因为聊天中发生了故障排除,因为它需要太多来回......

每个人都是对的,代码运行良好。OP 的问题是另一个代码正在添加一个 eventListener。这无法跟踪,因此只有源文件挖掘才能使其出现。如果整个应用程序使用 jQuery,那么 jQuery 知道它附加的所有事件,因此类似于建议的故障排除的东西会显示事件,然后帮助挖掘添加/删除的行:$._data( $("a")[0], "events" );

如果像 OP 一样,您最终得到的代码是您不知道使用 addEventListener 添加普通(普通)JS 事件的,则无法列出元素的 eventListener,因此调试不是那么容易。不过,一个小型原型 hack 可以帮助您,将此代码添加为页面执行的 VERY FIRST js 代码(只需将其放在标签中即可):

var sourceAEL = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(type, listener){
    console.log('Type: '+type);
    debug;//Will stop the code from executing allowing debugging in browser console (and thus know what calls it)
    sourceAEL.apply(this,[type,listener]);
};
于 2013-09-06T21:29:43.780 回答