我是一个编程新手,我不知道如何在JQuery中存储一个函数并在多个地方运行。
我有:
$(function () {
$("div.class").click(function(){
//Doo something
});
$("div.secondclass").click(function(){
//Doo something
});
});
现在两个"//Doo的东西“是一样的,我不想再写同样的代码了。
如果我写上:
$(function () {
function doosomething ()
{
//Doo something
}
$("div.class").click(doosomething);
$("div.secondclass").click(doosomething);
});
这将在页面加载时运行函数,而不是仅在单击时运行。
我怎样才能正确地做到这一点?
谢谢!
发布于 2009-07-28 03:43:51
下面的代码应该可以很好地工作。
$(function() {
// Way 1
function doosomething()
{
//Doo something
}
// Way 2, equivalent to Way 1
var doosomething = function() {
// Doo something
}
$("div.class").click(doosomething);
$("div.secondclass").click(doosomething);
});
基本上,声明函数的作用域与使用它的作用域相同(JavaScript使用Closures来确定作用域)。
现在,由于JavaScript中的函数的行为类似于任何其他对象,因此您只需使用.click(doosomething);
将doosomething
指定为在单击时调用的函数
您的函数只有在使用doosomething()
(不带()
的doosomething
引用该函数,但不调用它)或中的另一个函数(在本例中为click
处理程序)调用时才会执行。
发布于 2009-07-28 11:21:50
我会这样做:
(function($) {
jQuery.fn.doSomething = function() {
return this.each(function() {
var $this = $(this);
$this.click(function(event) {
event.preventDefault();
// Your function goes here
});
});
};
})(jQuery);
然后在document ready上,你可以这样做:
$(document).ready(function() {
$('#div1').doSomething();
$('#div2').doSomething();
});
发布于 2009-07-28 03:44:07
function doosomething ()
{
//Doo something
}
$(function () {
$("div.class").click(doosomething);
$("div.secondclass").click(doosomething);
});
https://stackoverflow.com/questions/1191833
复制相似问题