Jquery返回b.fn.b.init

我必须选择多个元素,它们都有class =“org-box”。 在那个盒子里面有一个我想要捕获href的链接。 所以我这样做

$("a.org-box").click(function (e) { e.preventDefault(); var link = $(e).html(); $('.col-right').prepend("" + link +""); }) 

我总是得到的是null,我尝试过其他选择器
var link = $(ea).attr(“href”)。html();

运气一样。

我检查了我从那个选择$("a.org-box")得到的东西,我得到了这个 – > b.fn.b.init [102]

如果我这样做$("a.org-box:first").attr("href"); 我得到正确的href,但是当我做$("a.org-box").attr("href"); 我刚拿到第一个。

我做得不好? 如何选择所有a.org-box并在点击时捕获href?

 Click to prepend Google 

 $("a.org-box").on('click', function(e) { e.preventDefault(); $('.col-right').prepend("" + e.target.href +""); //http://google.com }); 

小提琴

你可以使用:

 $("a.org-box").click(function (e) { $('.col-right').prepend('' + $(this).attr('href') + ''); e.preventDefault(); }); 

this被设置为e.targete.target事件目标 (被点击的项目)。 您可以使用$(this).attr('href')$(this).prop('href')this.href或使用e.target任何相同变体。

我不知道你是否需要链接的内部文本( .text() )或href属性,所以我假设后者。

jQuery选择器返回所有匹配的元素,所以正在发生的是你从选择器返回这些元素的jQuery集合,事件数据不是触发事件正确实现的元素:

 $(a.org-box).click(function(){ var link = $(this).html(); $('.col-right').prepend("" + link +""); }); 

你使用$(this)因为jQuery正在遍历集合,所以就像你使用.each()this对象包含你的元素。