jQuery链接 - 为什么我不能链接这个?

时间:2011-11-28 14:08:33

标签: jquery chaining

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

$('#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');

据我所知,你应该能够把这些事件联系起来....任何想法为什么我不能?

4 个答案:

答案 0 :(得分:2)

你的例子应该有用。 Here's a live example。它通过类“bv_default_player_pic”显示我的Gravatar周围有红色边框,在id值为“myActivityFeed”的div中。当您单击该按钮时,它会执行您的代码(未更改,字面上复制和粘贴):

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

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

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

答案 1 :(得分:2)

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

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

来自jQuery removeClass() docs

  

如果包含类名作为参数,则只有该类   从匹配元素集中删除。 如果没有类名   在参数中指定,将删除所有类

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

答案 2 :(得分:0)

没有参数的

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

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

答案 3 :(得分:-1)

attr方法不返回jQuery对象。点击这里 attr Api

因此,你不能放任何东西。

removeClass返回一个jQuery对象。点击这里 removeClass api,您可以继续应用jQuery方法