我需要在多个jQuery对象上调用.each()函数,如下所示:
$('#table_1').each(function(){ /* foo */ });
$('#table_2').each(function(){ /* foo */ });
$('#table_3').each(function(){ /* foo */ });
我没有找到比单独写出每个功能更好的方法。
定义这样的函数:
$.fn.extend({
foo: function() {
//Some code
}
});
$('#table_1').each(foo);
在控制台中返回“未定义函数上的无法读取属性”调用“错误”。
我在这里做错了什么?
答案 0 :(得分:1)
foo
在此包装器外部不可见,您只能使用jquery
对象调用它。
而不是包裹内部
$.fn.extend({
简单地做到
var foo = function() {
//Some code
}
或
function foo () {
//Some code
}
答案 1 :(得分:1)
使用$.fn.extend
扩展jQuery对象,但只需要创建一个简单的函数
var foo = function(position, obj) {
console.log('iterated object:', obj);
}
$('#table_1').each(foo);
答案 2 :(得分:1)
如果你想直接在每个元素上调用foo函数:
$('#table_1, #table_2, #table3').each(function() {
$(this).foo();
});
我建议您可以在这些元素上放置一个公共类,并按此类选择:
$('.commonClass').each(function() {
$(this).foo();
});
或者你可以在foo
函数中进行迭代:
$.fn.extend({
foo: function() {
return this.each(function() {
// Do your stuff here
});
}
});
并像这样初始化:
$('.commonClass').foo();
示例强>
foo()
为每个选定的元素将文本颜色变为红色
$.fn.extend({
foo: function() {
return this.each(function() {
this.style = 'color:red';
});
}
});
// Call the function without each()
$('li').foo();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
&#13;
答案 3 :(得分:0)
只需使用普通&#34;原生&#34;功能。请记住,jQuery会反转参数的顺序,因此首先是索引,然后是元素(也在上下文this
中)。
function doSomething(i, el){
$(el).html('I was changed ' + i);
}
$(div).each(doSomething);
jsFiddle:https://jsfiddle.net/sdc2a011/