我正在研究jQuery Docs。我找到了这个例子
$( "h1" ).html().addClass( "test" );
为什么这段代码不起作用? getter和setter如何使用jquery?
修改
如果我想将类添加到特定标签,那么如何实现呢?
答案 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对象上运行
答案 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方法。