我有一个jquery函数可以挂钩所有输入元素,如:
$("input").blah();
如何从此功能中访问此类型的所有元素?不仅仅是当前由jQuery处理的那个。
该功能如下:
(function($) {
$.fn.blah = function(){
this.each(function(){
// how can I access all elements of type "this" here?
return this;
});
};
})(jQuery);
我想从所有这些元素中读取一些属性,然后根据这些属性对正在处理的当前元素执行一些操作
答案 0 :(得分:6)
(function($) {
$.fn.blah = function(){
var that = this;
this.each(function(index, element){
// this here means the element in that[i]
// that here means the original jQuery object.
return this;
});
};
})(jQuery);
您可以将this
保存在变量中,然后在.each
回调中进行访问。
答案 1 :(得分:2)
听起来您希望根据type
属性过滤输入。
我不知道你最终想要完成什么,但我想你可能不想在.each()
循环中这样做。
我首先过滤不同的类型,然后进行循环。
(function($) {
$.fn.blah = function(){
var text = this.filter('[type=text]');
var radio = this.filter('[type=radio]');
var checkbox = this.filter('[type=checkbox]');
text.each(function(){
// do something with all "text" inputs
return this;
});
};
})(jQuery);
另一种方法是只有一个循环,但根据type
的值执行不同的操作。这只有在您不需要整个集合时才有效。
(function($) {
$.fn.blah = function(){
this.each(function(){
if( this.type === "text" ) {
// do something with text inputs
} else if( this.type === "checkbox" ) {
// do something with checkboxes
}
// and so on
});
};
})(jQuery);
答案 2 :(得分:1)
$('input').bind( "whatever", function() {
$('input [type="' + $(this).attr( 'type' ) + '"] ).each( function () {
//...whatever code here
});
});