將變量綁定到Jquery對象的限制/問題是什麼? 我有一個文件A中的函數,我想在文件B中訪問。所以爲了做到這一點,我將它綁定到Jquery對象。我覺得可能有理由不這樣做。但我想不出來。誰能幫我Jquery對象綁定變量的問題
e.g
// File A
$.sayHello = function sayHello(){
alert("Hello");
}
//File B
$.sayHello();
是什麼這個問題。
將變量綁定到Jquery對象的限制/問題是什麼? 我有一個文件A中的函數,我想在文件B中訪問。所以爲了做到這一點,我將它綁定到Jquery對象。我覺得可能有理由不這樣做。但我想不出來。誰能幫我Jquery對象綁定變量的問題
e.g
// File A
$.sayHello = function sayHello(){
alert("Hello");
}
//File B
$.sayHello();
是什麼這個問題。
問題與大家做的是與現有的其他功能相沖突的東西,這是合法的,即使你不綁定到jQuery和綁定到你的窗口,所以它能夠更好地創建命名空間和附加變量,函數給它:
Myspace = {}
Myspace.sayHello = function sayHello(){
alert("Hello");
}
Myspace.sayHello();
或者如果你仍然要附加到jQuery的做同樣的使用jQuery:
$.Myspace = {}
$.Myspace.sayHello = function sayHello(){
alert("Hello");
}
$.Myspace.sayHello();
你在這裏提到的是一個好習慣,而不是問題的答案。 – jherax
是的,但是從一開始就解決了這個問題並刪除了將函數綁定到jQuery的所有問題 –
你必須確保FILEA FILEB之前將加載。如果你不能確保,我建議使用document.ready來確保在加載所有文件之前不調用該方法。
// File A
$.sayHello = function sayHello(){
alert("Hello");
}
//File B
$(document).ready(function() {
$.sayHello();
});
不污染jQuery的命名空間,聲明自己的命名空間,而不是:
var myNamespace;
(function (myNamespace) {
var doSomething = function() { console.log('Did Something'); };
})(myNamespace || (myNamespace = {}));
我建議使用穆罕默德·易卜拉欣的解決方案與命名空間,但使用jQuery:
文件:
$.fn.extend({
sayHello: function() {
alert("Hello");
}
});
文件B:
$ .fn.sayHello();
沒有jQuery的:
文件:
var MYNS = {
sayHello: function(){
console.log("Hello");
}
}
文件B:
MYNS.sayHello();
確保文件A的文件B
你之前定義可能會覆蓋現有的功能。你也會污染'jQuery'命名空間。 – 11thdimension
http://api.jquery.com/jQuery.fn.extend/ – Teemu