如何获取对jQuery选择器返回列表的引用?

时间:2011-11-04 09:41:03

标签: javascript jquery jquery-selectors

我有一些jQuery函数:

rfx.jQuery(function(){
    rfx.jQuery(".form-row.errors").blur(some_function(this))
});

但'this'是HTMLDocument,而不是选择器返回值列表。如何引用元素列表?

2 个答案:

答案 0 :(得分:2)

选择本身的结果即rfx.jQuery(".form-row.errors")将是返回元素的数组。

然而,在你的模糊事件......

rfx.jQuery(".form-row.errors").blur(function(){
     //`this` is the element reference... 
});

请在输入框之间查看此JS fiddle Example和标签。

如果没有:

,则无法从模糊中访问完整选择

a)blur()功能中再次选择...

rfx.jQuery(function(){
    rfx.jQuery(".form-row.errors").blur(function(){
         // `this` is the element which is blurring
         var formRowErrors = rfx.jQuery(".form-row.errors") //select again within the blur function
    });  
});

b)使用闭包,例如......

rfx.jQuery(function(){
    var formRowErrors = rfx.jQuery(".form-row.errors");
    rfx.jQuery(".form-row.errors").blur(function(){
         // `this` is the element which is blurring
         // formRowErrors is the jQuery selection of all form-row.errors
    });  
});

但是,在第二种方法中,var formRowErrors只会在您绑定时包含选择,即它不是“实时”

答案 1 :(得分:1)

您遇到了上下文问题。

rfx.jQuery(".form-row.errors").blur(function(){
   some_function(this);
});

匿名函数的结果为rfx.jQuery(".form-row.errors") this,如果你这样做

rfx.jQuery(function(){
    rfx.jQuery(".form-row.errors").blur(some_function(this))
});

这将是rfx.jQuery

中的上下文