使用Jquery对象绑定变量的问题

时间:2016-08-23 16:14:50

标签: javascript jquery

将变量绑定到Jquery对象有哪些限制/问题。 我在文件A中有一个函数,我想在文件B中访问。所以为了做到这一点,我将它绑定到Jquery对象。我觉得可能有理由不这样做。但我想不出任何。任何人都可以帮助我

例如

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

    //File B
    $.sayHello();

这有什么问题。

4 个答案:

答案 0 :(得分:1)

你所做的是与现有函数冲突的问题,即使你没有绑定到jQuery并绑定到你的窗口也是有效的,所以最好创建命名空间并附加变量,函数到它:

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

或者如果您仍想附加到jQuery,请使用jQuery:

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

答案 1 :(得分:0)

您必须确保在FileB之前加载FileA。如果你无法确定,我建议使用document.ready来确保在加载所有文件之前不调用该方法。

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

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

答案 2 :(得分:0)

不要污染jQuery名称空间,而是声明自己的名称空间:

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

答案 3 :(得分:0)

我建议使用带有命名空间的mohamed-ibrahim解决方案但是使用jquery:

档案A:

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

档案B:

$ fn.sayHello();

没有Jquery:

档案A:

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

}

档案B:

MYNS.sayHello();

确保在文件B

之前定义文件A.