標籤:

如何解決自定義變數名和 jQuery 的 $ 標識的衝突?

function $(id){

return typeof id === "string" ? document.getElementById(id) : id;

}

和以下語句衝突

function setTab2(n){

$("#lib_Tab1 div.lib_Menubox ul li").removeClass("hover");

$("#one"+n).addClass("hover");

$("#con_one_"+n).find("a.prev").click();

}

function $(id)這個變數有衝突,請高手幫我換個變數或者換個寫法。


$ 符號默認是被 jQuery 用作為別名的,你自己再定義 $ 必然就覆蓋了。

如果你一定要這麼寫,有兩種選擇:

  1. 你別用 $,換一個標識符。
  2. 使用 jQuery.noConflict 來避免衝突。

    &

    &

但是實際上,你自定義的 $ 函數完全沒有意義,直接使用 jQuery 來查找 DOM 元素就好了。不同的是參數可以是 CSS 選擇器,所以傳入 DOM ID 的話,之前要加 "#"。$("#someId")[0] 或者 $("#someId").get(0) 返回的就是相應的 DOM 元素(前提是$("#someId").length &> 0)。


換個名字是最直接的辦法。

但是如果你依然想用$作為函數名字的話,也可以。

可以這樣,

var obj = {

$:function(){ } //place your code here.

};

這樣你就可以照樣用$了, obj.$(『#con_one』+n), and so on!


既然都用了jQuery,既然全世界都用$,你的變數名當然不能是$了,改自己的變數名,就這麼簡單!


盡量別再定義$, 實在不行,可以jQuery的$可以用jQuery代替,或者自己定義$j=jQuery.noConflict(); jQuery的$就都變成$j.


實在想不通為啥非要起個會衝突的變數名啊。。。


既然用了jQuery,這個 function $(id) 定義多餘了,目的是什麼?


一般是自己定義$j=jQuery.noConflict();


推薦閱讀:

jQuery會過時嗎?
一些人瞧不起 jQuery 的理由是什麼?
如何看待 jQuery?
為什麼現在很多富web應用只支持chrome即使最新版edge都不支持?

TAG:JavaScript | jQuery |