使用以下代码,我想在函数声明中使用$ inside,然后在自调用函数内部引用它。使用noConflict()时如何执行此过程?当我运行以下代码时,我得到“未捕获的TypeError:$不是函数”
//I have jQuery 2.2.4 linked at the bottom of my page like this...
//<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="crossorigin="anonymous"></script>
//then my code...
var jq224 = $.noConflict();
function dosomething(){
$("#wrapper").append('<p>connect me</p>');
}
function doanotherthing(){
$("#someid").append('<p>show me something more</p>');
}
(function($) {
dosomething();
doanotherthing();
}(jq224));
为什么上述过程会出错?但是,如果我执行以下操作,则不会产生错误...
(function($) {
$("#wrapper").append('<p>connect me</p>');
}(jq224));
答案 0 :(得分:2)
致电noConflict
后,$
的“之前”引用已恢复。由于先前未声明$
,因此现在还不知道。
然而,您可以将$
传递给您正在调用的函数:
var jq224 = $.noConflict();
function dosomething($) {
$("#wrapper").append('<p>connect me</p>');
}
function doanotherthing($) {
$("#someid").append('<p>show me something more</p>');
}
(function($) {
dosomething($);
doanotherthing($);
}(jq224));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id='wrapper'>wrapper</div>
<div id='someid'>someid</div>
答案 1 :(得分:1)
这是因为您将jQuery设置为noConflict
,然后您尝试访问两个方法中的$
function dosomething(){
$("#wrapper").append('<p>connect me</p>');
}
function doanotherthing(){
$("#someid").append('<p>show me something more</p>');
}
此时$
不再与jQuery相关联,例如因为您还拥有使用$
字符的Microsoft.Ajax js文件,因此您可以将其用作
function dosomething(){
jq224("#wrapper").append('<p>connect me</p>');
}
function doanotherthing(){
jq224("#someid").append('<p>show me something more</p>');
}
或使用立即调用的函数
(function($) {
// in this function scope $ is 'just' one of the parameters that has been set as jq224
$("#wrapper").append('<p>connect me</p>');
}(jq224));