2016-08-23 44 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