2016-11-07 32 views
0

试图在使用jQuery的所有A标签上添加点击事件处理程序。尝试过和没有document.ready,也没有运气使用document.getElementsByTagName("a");。它正在记录'document is ready',但不附加事件侦听器。感谢您的帮助!使用jQuery在所有A标签上添加点击处理程序

$(document).ready(function() { 
    console.log('document is ready'); 
    $('a').each(function(){ 
     $(this).addEventListener("click", 
      function (event) { 
       console.log(event); 
       event.preventDefault(); 
      }, false 
     ); 
    }); 
}); 
+1

调音本地JavaScript和jQuery,挑一个不混合使用它们.... –

+2

你检查了你的JavaScript控制台吗?它应该向你展示'Uncaught TypeError:$(...)。addEventListener不是函数' –

+0

类型错误不在控制台中。 – Chad

回答

3

使用你实际上并不需要一个单击处理程序手动附加到每个元素jQuery选择 - 而您可以将处理程序附加到选择匹配的任何元素。

$('a')将匹配任意<a>页面上的标记,因此在这种情况下应该足够了。

$(document).ready(function() { 
    console.log('document is ready'); 
    $('a').click(function(event){ 
     console.log(event); 
    }); 
}); 

在您单击处理程序,该this背景将被设定为实际被点击的元素。

$('a').click(function(event){ 
     // "this" is the <a> that triggered the event. 
     // "$(this)" is the same element in a jquery wrapper. 
    }); 
+0

感谢您的回复。除了$('a')之外,我还需要确保数据已加载。文件已准备好,但数据不在那里。 (()=> {'a')。click(function(event){event.preventDefault(); )console.log(event,this,this);我使用同构获取,因此链接一个额外的 。 ); }); })是我的情况。 – Chad

+1

有道理:)很高兴帮助! – Lix

0

试试这个

$(document).ready(function() { 
 
    console.log('document is ready'); 
 
    $('a').each(function(){ 
 
     $(this).click(function(e){ 
 
\t \t \t e.preventDefault(); 
 
\t \t 
 
\t \t }); 
 
    
 
    }); 
 
});

+0

无需循环遍历所有元素。对于与给定选择器匹配的所有元素('$('a')'),可以为click处理程序定义一次。 – Lix

0

使用此:

$(document).on("click", 'a', function (event) { 
      alert(event); 
      event.preventDefault(); 
     }); 
+1

不使用'click()'速记方法的具体原因? – Lix

+0

'$('a')。click(“click”,function(event){ alert(event); //event.preventDefault(); });' – RonyLoud

+0

请忽略以上评论 – RonyLoud

相关问题