在getter之后调用Jquery方法

时间:2014-07-11 19:38:26

标签: javascript jquery

  

我正在研究jQuery Docs。我找到了这个例子

$( "h1" ).html().addClass( "test" );

为什么这段代码不起作用? getter和setter如何使用jquery?

修改

  

如果我想将类添加到特定标签,那么如何实现呢?

4 个答案:

答案 0 :(得分:2)

这不会起作用,因为$(selector).html()返回一个字符串值,该值构成所选元素的HTML内容。字符串不具有addClass功能。

编辑:为了响应您的编辑,只需按功能调用的顺序翻转。

$("h1").addClass("test").html()

答案 1 :(得分:2)

那是因为html()返回一个字符串。它就像

$( "h1" ).html().addClass("test");
// is like
var test1 = $( "h1" ).html();
test1 = test1.addClass( "test" ); // will fail because string has no addClass

但是如果你addClass首先,它会向h1 添加一个类,而会返回h1的jQuery对象,因此我们仍然可以使用{{ 1}}就可以了。它就像

html()

答案 2 :(得分:0)

html()返回字符串,因此您无法调用addClass方法,该方法假设在jQuery对象上运行

http://api.jquery.com/html/

http://api.jquery.com/addclass/

答案 3 :(得分:0)

在jQuery中,getters 获取某些信息。例如,上面的getter获取innerHTML jQuery对象的$("h1")属性。

另一方面,Setters从元素中改变信息。 Setter将改变信息,然后返回新的jQuery对象。对于所有(或至少大多数)不是getter的jQuery方法也是如此。

因为没有参数的.html() getter ,它返回一个字符串,而不是jQuery对象。但是,如果您使用带有参数的.html()方法作为 setter ,它将返回jQuery对象。这就是方法返回的jQuery对象的方法是如何工作的:你可以在一行代码中调用方法,因为这些方法返回jQuery对象。但是,如果其中一种方法是吸气剂,则不起作用。

$("h1").html().addClass(test); //TypeError: undefined is not a function (Chrome)
$("h1").html("Hi!").addClass(test); //Perfectly valid

This tutorial解释了如何链接jQuery方法。