繁体   English   中英

使用多个JQUERY库时发生冲突

[英]Conflict in using multiple JQUERY libraries

在我的Web应用程序中,我有一个日期选择器jquery,一切正常,直到添加了引用不同库的新jquery代码。 该Jquery的目的是修复gridview标头。

添加此代码后,日期选择器停止工作。 是什么引起冲突?

在此处输入图片说明

这是代码

1. DatePicker JQuery位于外部JS文件中

  $(function () { $("#txtdatefrom").datepicker(); }); $(function () { $("#txtdateto").datepicker(); }); window.onload = function () { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); } function endRequestHandler(sender, args) { init(); } function init() { $(function () { $("#txtdatefrom").datepicker(); }); $(function () { $("#txtdateto").datepicker(); }); } $(function () { // DOM ready init(); }); 

3. jQuery修复gridview标头。 添加此选项后,日期选择器功能停止工作。

<script type = "text/javascript">
    //not needed kasi it produced double scrolls, pero pwede din e.. ewan 
     $(document).ready(function () {
      $('#<%=grdWSR.ClientID %>').Scrollable({
        ScrollHeight: 300
      });
        }) 


        window.onload = function () {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
        }

        function endRequestHandler(sender, args) {
            init();
        }

        function init() {
            $(document).ready(function () {
                $('#<%=grdWSR.ClientID %>').Scrollable({
                 ScrollHeight: 300
             });
         })
     }

     $(function () { // DOM ready
         init();
     });

</script>

检查浏览器控制台找到错误后,原因如下:

jquery-ui-1.8.19.custom.min.js:5 Uncaught TypeError: Cannot read property 'ui' of undefined

问题是由于init()函数的定义冲突。 在这两个文件中,您使用了相同的名称。 尝试重命名其中之一,您的问题应该已解决。

编辑:尝试将第二个片段更改为以下内容:

<script type = "text/javascript">
    //not needed kasi it produced double scrolls, pero pwede din e.. ewan 
     $(document).ready(function () {
      $('#<%=grdWSR.ClientID %>').Scrollable({
        ScrollHeight: 300
      });
        }) 


        window.onload = function () {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
        }

        function endRequestHandler(sender, args) {
            fixGridHeader();
        }

        function fixGridHeader() {
            $(document).ready(function () {
                $('#<%=grdWSR.ClientID %>').Scrollable({
                 ScrollHeight: 300
             });
         })
     }

     $(function () { // DOM ready
         fixGridHeader();
     });

</script>

我已经找到答案了。 根据研究,可以通过使用jquery.noConflict()代码来使用多个Jquery代码或库。

Datepicker的javascript

var $152 = jQuery.noConflict();
$152(function () {

    $152("#txtdatefrom").datepicker({
        changeMonth: true,
        changeYear: true
    });


//On UpdatePanel Refresh
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm != null) {
        prm.add_endRequest(function (sender, e) {
            if (sender._postBackSettings.panelsToUpdate != null) {
                $152(function () {

                    $152("#txtdatefrom").datepicker({
                        changeMonth: true,
                        changeYear: true
                    });

                });

            }
        });
    };

用于gridview标题

 var $151 = jQuery.noConflict();

    //not needed kasi it produced double scrolls, pero pwede din e.. ewan 
    $151(document).ready(function () {
        $151('#<%=grdWSR.ClientID %>').Scrollable({
             ScrollHeight: 300
         });
     })

     window.onload = function () {
         Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
     }

     function endRequestHandler(sender, args) {
         init();
         //fixGridHeader();
     }

     function init() {
         //function fixGridHeader() 

         $151(document).ready(function () {
             $151('#<%=grdWSR.ClientID %>').Scrollable({
                ScrollHeight: 300
            });
        })

    }


    $151(function () { // DOM ready
        //fixGridHeader()
        init()
    });

只需创建一个将使用jquery.noconflict()函数分配的变量即可。 然后将每个$替换为每个javascript创建的变量。 那么它将已经可以工作了。

参考: https : //learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM