【问题标题】:jQuery chaining - why cant I chain this?jQuery 链接 - 为什么我不能链接这个?
【发布时间】:2012-01-07 23:33:30
【问题描述】:

我遇到了链接问题。例如,以下将起作用

$('#myActivityFeed .bv_default_player_pic').attr("src", url);
$('#myActivityFeed. bv_default_player_pic').removeClass().addClass('badge');

但以下不会:

$('#myActivityFeed .bv_default_player_pic').attr("src", url).removeClass().addClass('badge');

据我所知,您应该能够将这些事件链接起来......关于为什么我不能这样做的任何想法?

【问题讨论】:

  • 你要删除什么类?
  • 为我工作:jsfiddle.net/JSbuu
  • @Ortal,这应该可以。我最好的猜测是urlundefined,所以对attr() 的调用被解释为它的getter 形式,它是不可链接的。是这样吗?
  • 在你的第二行代码中,点在myActivityFeed 之后而不是bv_default_player_pic 之前——我认为这实际上不在你的代码中?
  • 正确,是的,这不是实际代码。我试图删除所有类...

标签: jquery chaining


【解决方案1】:

您的示例应该有效。 Here's a live example。它通过类“bv_default_player_pic”在具有id 值“myActivityFeed”的 div 内显示了我的 Gravatar,其周围带有红色边框。当您单击该按钮时,它会执行您的代码(未更改,实际上是复制粘贴):

$('#myActivityFeed .bv_default_player_pic').attr("src", url).removeClass().addClass('badge');

...将src 设置为你的 Gravatar,删除所有类,并添加类“徽章”(使用我的 CSS 使边框变黑)。

工作得很好。问题出在其他地方(url 是否已定义?)。

【讨论】:

  • 不是必须的,className 是可选的,在这种情况下它会删除所有的类。 Check here
  • @Arindam:谢谢,我不知道,但是当我重新阅读我的答案时,我想“......我想知道它是否......”并且有你的评论。固定。
  • 抱歉,该评论不适用于您的帖子。可能是页面刷新问题
  • @Arindam:不,你完全正确,我对removeClass 犯了同样的错误。再次感谢您指出。
【解决方案2】:

根据最新的jQuery版本,removeClass()方法不需要传递参数。

This example 说明上述代码应该是可链接的并且即使没有任何参数传递给 removeClass() 也可以工作。

来自 jQuery removeClass() docs

如果包含一个类名作为参数,那么只有该类会 从匹配的元素集中删除。 如果没有类名 参数中指定,所有类都将被删除

我在您的代码中看到的唯一问题是变量 url 可能未定义。

【讨论】:

    【解决方案3】:

    removeClass() 不带参数会删除所有类,所以为什么不这样做:

    $('#myActivityFeed .bv_default_player_pic').attr("src", url).attr("class", "badge");
    

    【讨论】:

    • 虽然是真的,但它与 OP 在attr 调用之后的链接问题无关。
    【解决方案4】:

    attr 方法不返回 jQuery 对象。在这里检查。 attr Api.

    因此你不能把任何事情都结束。

    removeClass 返回一个 jQuery 对象。在这里检查 removeClass api,可以继续应用jQuery的方法

    【讨论】:

    • 当你 setting 属性为 OP 时,它确实返回 jQuery 对象:api.jquery.com/attr/#attr2(不是我的反对意见,感谢您对我的回答的评论.)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2021-05-18
    相关资源
    最近更新 更多