
- Getters 和 Setters
JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Getter 。在选择器中Setter对所有的元素都有效,而Getter只能获取选择器中的第一个元素的值。
// 这个.html()方法被作为setter: $( "h1" ).html( "hello world" ); // 这个.html()方法被作为getter: $( "h1" ).html(); |
Setter返回的是一个JQuery对象,它允许你继续在选择器上调用JQuery方法,而Getter返回的是请求的值,因此你不能继续调用JQuery方法在一个Getter的返回值上。
这是一个错误示例: $( "h1" ).html().addClass( "test" ); |
- Chaining
如果你在选择器上调用一个方法,并且该方法返回的是一个JQuery对象,你可以继续调用JQuery方法在这个对象上,没有分号暂停,这种做法被称之为“Chaining”。
$( "#content" ).find( "h3" ).eq( 2 ).html( "new text for the third h3!" ); |
它可以增强代码的可读性。
$( "#content" ) .find( "h3" ) .eq( 2 ) .html( "new text for the third h3!" ); |
JQuery提供.end()方法,可以在选择器链的中间返回到最原始的那个选择器。
$( "#content" ) .find( "h3" ) .eq( 2 ) .html( "new text for the third h3!" ) .end() // 恢复到#content中所有h3的选择器 .eq( 0 ) .html( "new text for the first h3!" ); |
Chaining是一个非常强大的功能,自从JQuery开始流行,很多的库都应用了这一功能。然而这一功能我们必须谨慎使用,大量的使用Chaining会导致代码难以修改和调试。由于没有应用于Chaining的规范,大量的使用它会得意忘形。