我是一个编程新手,我无法弄清楚如何在JQuery中存储一个函数并在多个地方运行它.
我有:
$(function () {
$("div.class").click(function(){
//Doo something
});
$("div.secondclass").click(function(){
//Doo something
});
});
Run Code Online (Sandbox Code Playgroud)
现在2"// Doo somethings"是相同的,我不想再次编写相同的代码.
如果我把:
$(function () {
function doosomething ()
{
//Doo something
}
$("div.class").click(doosomething);
$("div.secondclass").click(doosomething);
});
Run Code Online (Sandbox Code Playgroud)
这将在页面加载时运行该函数,而不是仅在它单击时运行.
我该怎么做呢?
谢谢!
And*_*ore 108
以下应该很好地工作.
$(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);
});
Run Code Online (Sandbox Code Playgroud)
基本上,您在与使用它的范围相同的范围内声明您的功能(JavaScript使用Closures来确定范围).
现在,由于JavaScript中的函数表现得像任何其他对象一样,您可以简单地指定doosomething为使用单击时调用的函数.click(doosomething);
在使用doosomething()(doosomething不()引用函数但不调用它)或其他函数调用(在本例中为click处理程序)之前,您的函数将不会执行.
小智 28
我会这样做:
(function($) {
jQuery.fn.doSomething = function() {
return this.each(function() {
var $this = $(this);
$this.click(function(event) {
event.preventDefault();
// Your function goes here
});
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
然后在文档准备好了你可以做这样的事情:
$(document).ready(function() {
$('#div1').doSomething();
$('#div2').doSomething();
});
Run Code Online (Sandbox Code Playgroud)
Vin*_*nie 18
function doosomething ()
{
//Doo something
}
$(function () {
$("div.class").click(doosomething);
$("div.secondclass").click(doosomething);
});
Run Code Online (Sandbox Code Playgroud)
小智 11
或者(我最好说),你可以这样做:
$(function () {
$("div.class, div.secondclass").click(function(){
//Doo something
});
});
Run Code Online (Sandbox Code Playgroud)
您也可以这样做 - 因为您希望在任何地方使用一个函数,您可以通过直接调用JqueryObject.function()来实现.例如,如果要创建自己的函数来操作元素上的任何CSS:
jQuery.fn.doSomething = function () {
this.css("position","absolute");
return this;
}
Run Code Online (Sandbox Code Playgroud)
和它的方式:
$("#someRandomDiv").doSomething();
Run Code Online (Sandbox Code Playgroud)