在jquery中调用同名函数?

时间:2012-03-30 13:46:45

标签: javascript jquery asp.net

我的asp网站上有两个文件j,名为

1-jquery.datepick.js

2-jquery.hijridatepick.js

这些文件具有相同的名称功能,但第二个apear popup hijricalender我称之为

  <script type="text/javascript">
      $(function () {
          $('[id$=TextBox1]').datepick({ dateFormat: 'dd/mm/yyyy' });
       });
  </script>

for textbox2我想2从第一个文件中使用datepick函数如何icall它导致我引用第一个文件

 $('[id$=TextBox2]').datepick({ dateFormat: 'dd/mm/yyyy' });

但是再次调用第二个文件的功能 ???

2 个答案:

答案 0 :(得分:4)

第二个文件正在覆盖第一个文件。您必须更改其中一个函数的名称以避免冲突。

你会在文件中找到这样的东西:

jQuery.fn.datepick = function() {
    // etc.
};

这是创建jQuery插件方法的地方。只需将一个或两个文件中的datepick更改为不同且唯一的文件。

答案 1 :(得分:1)

如FishBasketGordo的回答所述,第二个加载函数将覆盖第一个函数,更改一个名称将解决这个问题,但是有一个更深层次的问题需要解决。

发生这种情况的原因是函数被添加到全局命名空间。在javascript中,代码来自的文件是无关紧要的。避免避免污染全局命名空间的一种方法是将函数包装在对象中,因此在您的情况下,您可能有:

/* 1-jquery.datepick.js */
datepick = new Object;
datepick.datepick = function() {
    /* function definition here */
    alert('first file function');
};

/* 2-jquery.hijridatepick.js */
hijridatepick = new Object;
hijridatepick.datepick = function() {
    /* function definition here */
    alert('second file function');
};

然后可以使用以下方法访问这些功能:

datepick.datepick();
/* alerts 'first file function' */

hijridatepick.datepick();
/* alerts 'second file function' */