从服务器端调用一个函数Immediately-Invoked Function - jquery

时间:2014-05-22 06:33:56

标签: javascript jquery jquery-ui server-side scriptmanager

我用以下

包围了我的脚本
(function ($)
{  
    $(document).ready(function () {....})
    function HandleOpJqUIClientSide(){....}
    .............

})(jQuery);

以及在asp页面中嵌入以下内容

<script src="~/Scripts/StatsScript.js" type="text/javascript">jQuery.noConflict();</script>

我的脚本中有一个函数,在服务器端调用如下

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "HandleOpJqUIClientSide()", true);

在使用noconflict处理我的脚本之前它正常工作(因为我需要它,因为一些外部插件与我的代码冲突)

现在扔了

  

未定义的异常

如何再次操作从服务器端调用的函数

2 个答案:

答案 0 :(得分:2)

你必须像这样

jQuery.noConflict();
(function ($)
{  
    $(document).ready(function () {....})
    function HandleOpJqUIClientSide(){....}
    .............

})(jQuery);

从脚本代码中删除noConflict

<强>更新

实际上HandleOpJqUIClientSide在该范围内是私有的,无法直接从外部访问,我们需要有一个公共访问者。

jQuery.noConflict();
var noConflict = (function ($){  
    $(document).ready(function () {....})
    return {
         HandleOpJqUIClientSide : function (){....}
    }
    .............

})(jQuery);

在服务器端

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "noConflict.HandleOpJqUIClientSide()", true);

答案 1 :(得分:0)

你只需要这样做:

<script src = "other_lib.js"> </script>
<script src="jquery.js"></script > 

<script type="text/javascript"> 
$.noConflict();
jQuery(document).ready(function ($) {
    function HandleOpJqUIClientSide() {
        //your $ in the code here will represent JQuery 
    }
});
// Code that uses other library's $ can follow here.
</script>

外部文件准备好了:

var $1=JQuery();
function HandleOpJqUIClientSide() {
    //your $1 in the code here will represent JQuery 
}