2016-08-23 83 views
0

將變量綁定到Jquery對象的限制/問題是什麼? 我有一個文件A中的函數,我想在文件B中訪問。所以爲了做到這一點,我將它綁定到Jquery對象。我覺得可能有理由不這樣做。但我想不出來。誰能幫我Jquery對象綁定變量的問題

e.g

// File A 
    $.sayHello = function sayHello(){ 
     alert("Hello"); 
    } 

    //File B 
    $.sayHello(); 

是什麼這個問題。

+0

你之前定義可能會覆蓋現有的功能。你也會污染'jQuery'命名空間。 – 11thdimension

+0

http://api.jquery.com/jQuery.fn.extend/ – Teemu

回答

1

問題與大家做的是與現有的其他功能相沖突的東西,這是合法的,即使你不綁定到jQuery和綁定到你的窗口,所以它能夠更好地創建命名空間和附加變量,函數給它:

Myspace = {} 
Myspace.sayHello = function sayHello(){ 
    alert("Hello"); 
} 
Myspace.sayHello(); 

或者如果你仍然要附加到jQuery的做同樣的使用jQuery:

$.Myspace = {} 
$.Myspace.sayHello = function sayHello(){ 
    alert("Hello"); 
} 
$.Myspace.sayHello(); 
+0

你在這裏提到的是一個好習慣,而不是問題的答案。 – jherax

+0

是的,但是從一開始就解決了這個問題並刪除了將函數綁定到jQuery的所有問題 –

0

你必須確保FILEA FILEB之前將加載。如果你不能確保,我建議使用document.ready來確保在加載所有文件之前不調用該方法。

// File A 
$.sayHello = function sayHello(){ 
    alert("Hello"); 
} 

//File B 
$(document).ready(function() { 
    $.sayHello(); 
}); 
0

不污染jQuery的命名空間,聲明自己的命名空間,而不是:

var myNamespace; 
(function (myNamespace) { 
    var doSomething = function() { console.log('Did Something'); }; 
})(myNamespace || (myNamespace = {})); 
0

我建議使用穆罕默德·易卜拉欣的解決方案與命名空間,但使用jQuery:

文件:

$.fn.extend({ 
    sayHello: function() { 
    alert("Hello"); 
    } 
}); 

文件B:

$ .fn.sayHello();

沒有jQuery的:

文件:

var MYNS = { 
    sayHello: function(){ 
     console.log("Hello"); 
    } 

}

文件B:

MYNS.sayHello(); 

確保文件A的文件B