0

我有一个关于风格/紧凑性的问题。我有一个函数,我想在我的文档加载时运行一次,并且在触发事件时也运行一次。

我的代码看起来像这样:

$('.myClass').each(function(){my_function(etc);});
$('.myClass').keyup(function(){my_function(etc);});

我想知道是否有一种方法可以将这两行代码合并为一个。目前它工作正常,但我重复代码的事实让我认为可能有更简洁的方法来做到这一点。

.bind() 和 .on() 没有让我高兴。我假设这是因为它们是针对事件的,而 .each() 不是事件。

任何人都可以提供任何见解吗?干杯

4

3 回答 3

1

所以,http://api.jquery.com/jQuery.each/是迭代器

$.each() 函数与 $(selector).each() 不同,后者用于以独占方式迭代 jQuery 对象。$.each() 函数可用于迭代任何集合,无论是映射(JavaScript 对象)还是数组。在数组的情况下,回调每次都会传递一个数组索引和一个对应的数组值。(该值也可以通过 this 关键字访问,但 JavaScript 将始终将 this 值包装为一个对象,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,即被迭代的对象。

keyup是事件:http ://api.jquery.com/keyup/

希望它符合原因,如果我错过了什么,请让我知道!:)

试试这个:

$(".myClass").each(my_function(etc))
             .bind("keyup mouseover", my_function(etc));
于 2012-09-23T23:36:28.553 回答
0

如果在功能块中包含 javascript 代码:

(function($){
    ...
})(jQuery);

并使用局部变量,那么你就不会弄乱全局命名空间(窗口)。

然后在该功能块内,您可以声明和使用类似的功能

function my_named_function(etc){};
$('.myClass').each(my_named_function)
    .keyup(my_named_function);

这回答了你的问题了吗?

于 2012-09-23T23:32:36.543 回答
0

你可以使用这样的东西:

my_function=function(){
//do something  
}  
$('.myClass').each(my_function)
             .keyup(my_function);
于 2012-09-23T23:37:15.890 回答