如何在jquery中运行一个函数
我是一个编程新手,我不知道如何在JQuery中存储一个函数,并在多个地方运行。
我有:
$(function () { $("div.class").click(function(){ //Doo something }); $("div.secondclass").click(function(){ //Doo something }); });
现在2“// Doo somethings”是一样的,我不想再写相同的代码。
如果我把:
$(function () { function doosomething () { //Doo something } $("div.class").click(doosomething); $("div.secondclass").click(doosomething); });
这将运行页面加载function,而不是只有当它点击。
我如何正确地做到这一点?
谢谢!
以下应该很好地工作。
$(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使用闭包来确定范围)。
现在,因为JavaScript中的函数的行为与其他任何对象一样,您可以简单地通过使用.click(doosomething);
指定doosomething
作为调用点击的函数.click(doosomething);
你的函数在你使用doosomething()
调用它之前不会执行( doosomething
没有()
指的是函数,但不调用它)或者另一个函数调用(在这种情况下是click
处理程序)。
我会这样做:
(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(function() { $('#div1').doSomething(); $('#div2').doSomething(); });
function doosomething () { //Doo something } $(function () { $("div.class").click(doosomething); $("div.secondclass").click(doosomething); });
另外(我会说最好),你可以这样做:
$(function () { $("div.class, div.secondclass").click(function(){ //Doo something }); });
你也可以做到这一点 – 因为你想要一个函数在任何地方都可以使用,所以你可以直接调用JqueryObject.function()。 例如,如果你想创build自己的函数来操作元素上的任何CSS:
jQuery.fn.doSomething = function () { this.css("position","absolute"); return this; }
而这种方式称之为:
$("#someRandomDiv").doSomething();
这是最混乱的解决scheme吗? 我不相信jQuery的想法是创build这样的代码。还有一个假设,我们不想冒泡事件,这可能是错误的。
$(function(){}
doosomething()
之外的简单移动doosomething()
将使其具有全局范围,并使代码简单易读。