将变量绑定到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