0

我必须选择多个元素,它们都有类="org-box"。在该框中有一个链接,我想捕获href。所以我这样做

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

我总是得到的是空值,我尝试过其他选择器,比如
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?

4

3 回答 3

2
<a href="http://google.com" class="org-box">Click to prepend Google</a>

--

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

小提琴

于 2012-08-17T20:10:43.323 回答
0

你可以使用:

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

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

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

于 2012-08-17T20:13:20.643 回答
0

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

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

您之所以使用$(this),是因为 jQuery 正在遍历集合,所以就像您使用.each()对象this保存您的元素一样。

于 2012-08-17T20:18:44.060 回答