Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Jquery别名传递到javascript函数中_Javascript_Jquery - Fatal编程技术网

将Jquery别名传递到javascript函数中

将Jquery别名传递到javascript函数中,javascript,jquery,Javascript,Jquery,我正在为wordpress创建一个主题,我需要使用一些jQuery。我在网上找到了一些代码,自己也做了一些。但是,当使用wordpress提供的jQuery时,它处于noConflict模式,并将其设置为“jQuery”,而不是使用$。这很好,但我不想修改我的所有代码和我在网上找到的任何代码,以使用“jQuery”而不是$ 因此,它告诉我,通过在末尾放置函数($),您可以使用$作为jQuery别名,但只能在该函数范围内使用。这很好,但我希望它能够工作,并通过我在该范围内调用的函数来实现。这就是我

我正在为wordpress创建一个主题,我需要使用一些jQuery。我在网上找到了一些代码,自己也做了一些。但是,当使用wordpress提供的jQuery时,它处于noConflict模式,并将其设置为“jQuery”,而不是使用$。这很好,但我不想修改我的所有代码和我在网上找到的任何代码,以使用“jQuery”而不是$

因此,它告诉我,通过在末尾放置
函数($)
,您可以使用$作为jQuery别名,但只能在该函数范围内使用。这很好,但我希望它能够工作,并通过我在该范围内调用的函数来实现。这就是我的问题所在。如何使在“resizeandcenter”函数中使用$的jQuery代码正常工作

jQuery('.artworklist > li > a > img').load(function ($){
   resizeitems('artworklist');
});
这是我的函数,我希望能够使用$inside,因为我不想修改我的所有代码/以及我在网上找到的任何代码

function resizeitems(elementname){
    //Do some jquery stuff using $
}
也许有另一种方法来做我正在做的事情或者我做错了

编辑:

我的函数“resizeitems”独立于包含在我的页眉中的js文件中

另一个代码,我的第一个代码块中的jQuery代码位于脚本块页面的底部


因此,我有点不确定答案是“包装我的函数吗?”

您需要将jQuery传递到包含代码的顶级闭包中。通常这在
$(document).ready()调用中。一个基本示例如下所示:

jQuery(function($) {
      function resizeitems(elementname){
          //Do some jquery stuff using $
      }
      $('.artworklist > li > a > img').load(function (){
          resizeitems('artworklist');
      });
});

jQuery
现在在该闭包中被别名为
$

您可以像这样将整个代码包装在一个自动执行闭包(或一个on-ready/load闭包)中

(function ($) {
    // do your stuff here
}(jQuery));
然后您可以在该闭包中使用$

下面是一个例子

window.addEventListener(“加载”,函数(){
(功能($jq){
$jq(“body”).append($jq(“”).text(“hello”);
}(jQuery));
},假);
下面是一个使用jquery的事件侦听器的示例

jQuery(document).ready(function() {
    (function ($jq) {
        $jq("body").append($jq("<div>").text("hello"));
    }(jQuery));
});
jQuery(文档).ready(函数(){
(功能($jq){
$jq(“body”).append($jq(“”).text(“hello”);
}(jQuery));
});

或者jquery中的另一种选择,主要是语法更改@

jQuery(函数($jq){
$jq(“body”).append($jq(“”).text(“hello”);
});

在这里,最重要的是范围。如果您的其他函数在其他作用域中,您可以在该作用域中将全局jQuery重新映射到$,这样您就不必更改代码

var $ = jQuery;
您甚至可以在全局范围内设置它,但如果将$用于其他用途,则可能会影响页面上的其他用途:

window.$ = jQuery;

这是使用立即调用函数表达式(IIFE)的正确方法您好,我以前见过一些类似的内容,但我真的看不到或不明白如何在我的例子中使用它。我认为您通过切换示例事件绑定来抛开OP。所以我会将我的函数放在
(函数($){//在这里做您的事情}(jQuery);
然后我仍然可以正常调用函数等等?@binarysmacker因为我没有足够的信息为您的情况提供精确的解决方案,我建议首先使用自执行闭包,如果它不起作用,那么您很可能需要使用“load”事件或jquery的“load”来等待DOM加载ready’event binding。这很有效!但这意味着我编写的任何类型的函数或代码都需要在顶部包含这一行?我希望有一种方法,我不需要修改或添加额外的代码,也许它不存在?这里的问题是,他们为什么要使它不冲突?也许$已经被用于某些事情se,这只会在网页上覆盖它。始终使用某些作用域而不污染全局作用域是一种良好的做法。因此,如果作用域设置正确,则只需为整个作用域定义一次。我没有顶级闭包。
jQuery('.artworklist>li>a>img').load(函数($){
块直接在我的
标记之后。函数resizeandcenter只在它自己的js文件中,并且包含在标题中。为什么不将所有代码放在一个文件中,并按照我所描述的那样包装它?
var $ = jQuery;
window.$ = jQuery;