2012-08-06 84 views
2

我正在开发dnn模块。随着模块数量在同一页面上增加,jquery会多次调用。如何避免dnn中的jquery冲突

(function ($) { 
     $('#grid').hoverfold(); 
    })(jQuery); 

这是我用来避免冲突。如果我使用相同的下一个效果,它不起作用。

回答

0
var $j = jQuery.noConflict(); 
$j(document).ready(function(){ 
    ...code goes here... 
}); 

试试这个,

+0

如果您调用'jQuery.noConflict()',那将从页面中删除'jQuery'变量,这将打破尝试使用jQuery的所有其他功能。 – bdukes 2014-01-22 15:48:09

3

例如,如果你看看/DesktopModules/Admin/HostSettings/HostSettings.ascx,你会发现DNN的核心开发人员正在使用下面的代码:

(function ($, Sys) { 
$(document).ready(function() { 
    //Your code goes here. 
}); 
}(jQuery, window.Sys));
从这个

除此之外,如果你注意到$(document).ready函数,它们重复相同的代码来处理由于更新窗格而导致的ajax post backs。这将确保你的代码能够正常工作,即使模块启用了Ajax。

$(document).ready(function() { 
     setUpDnnHostSettings(); 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() { 
      setUpDnnHostSettings(); 
     }); 
    });

您还可以查看管理文件夹中核心中的其他ascx控件。我希望这将有所帮助。