如何解決自定義變數名和 jQuery 的 $ 標識的衝突?
01-13
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 用作為別名的,你自己再定義 $ 必然就覆蓋了。如果你一定要這麼寫,有兩種選擇:
- 你別用 $,換一個標識符。
- 使用 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 |