在getter之后调用Jquery方法

Calling Jquery method after a getter

本文关键字:Jquery 方法 调用 之后 getter      更新时间:2023-09-26

我在查jQuery文档。我发现了这个例子

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

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

编辑

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

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

编辑:响应您的编辑,只需切换函数调用的顺序即可。

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

这是因为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对象,所以我们仍然可以在它上使用html()

$( "h1" ).addClass( "test" ).html();
// is like
var test1 = $( "h1" ).addClass( "test" ); // test1 is a jQuery object of h1
test1 = test1.html(); // success, because test1 is a jQuery object (has .html()).

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

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

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

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

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

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

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

本教程介绍如何链接jQuery方法。