如何在jquery中运行函数
我是一个编程新手,我不知道如何在JQuery中存储函数并在多个地方运行 我有:如何在jquery中运行函数,jquery,function,Jquery,Function,我是一个编程新手,我不知道如何在JQuery中存储函数并在多个地方运行 我有: $(function () { $("div.class").click(function(){ //Doo something }); $("div.secondclass").click(function(){ //Doo something }); }); 现在2个“//Doo somethings”都是一样的,我不想再写同样的代码了 如果我说: $(function (
$(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() {
// 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(doosthing)将doosthing
指定为调用click的函数代码>
除非您使用doosome()
(doosome
而不使用()
引用函数,但不调用它)或其他函数调用它(在本例中,使用单击处理程序)。或者(我最好说),您可以这样做:
$(function () {
$("div.class, div.secondclass").click(function(){
//Doo something
});
});
$(document).ready(function() {
$('#div1').doSomething();
$('#div2').doSomething();
});
我会这样做:
(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 () {
$("div.class, div.secondclass").click(function(){
//Doo something
});
});
$(document).ready(function() {
$('#div1').doSomething();
$('#div2').doSomething();
});
这是最模糊的解决方案吗?我不相信jQuery的想法是创建这样的代码。还有一个假设,我们不想冒泡事件,这可能是错误的
在$(function(){}
之外简单地移动doosomething()
将使其具有全局作用域,并保持代码简单/可读。您也可以这样做-因为您希望在任何地方都使用一个函数,所以可以通过直接调用JqueryObject.function()来实现。例如,如果要创建自己的函数来操作元素上的任何CSS:
jQuery.fn.doSomething = function () {
this.css("position","absolute");
return this;
}
以及如何称呼它:
$("#someRandomDiv").doSomething();
谢谢你的方法2,我必须尝试一下。但是这个函数确实是在页面加载时运行的,因为在jquery$(function()中是文档加载的缩写。所以至少方法1是不起作用的。我对jquery非常陌生,所以你能解释一下第一行$(function()){
?请问这一行的用途是什么?tyvm$是“jQuery”的简写。因此,每当您在某处看到“$”时,您必须认为这是jQuery函数,$(function(){});它将使它不会指定特定事件:代码将在文档准备就绪时执行。$(function(){};==jQuery(document).ready(function(){});或$(document.ready(function(){});在“document ready”之外创建函数实际上有什么好处吗?@Nuktu是的,用于插件开发。如果你在函数参数中使用$,那么为什么还要麻烦调用它jQuery而不是再次使用$呢?它通过jQuery,这样即使你有其他库分配给$,这个版本也可以工作。函数中的形式参数及其用法具有局部作用域,因此不会发生错误当f.e div.secondclass还不存在时,为什么在parens中有$beforeNice而不是f.e div.secondclass…不是!但是如果它只在JQuery函数中使用,那么最好不要污染全局范围并将其保留在它所属的位置。