1

我在两个 Joomla 模块中有一个 jQuery 冲突。我在每个模块中都找到了以下代码。谁能帮我解决冲突?

第一个模块中的代码:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

//...

<script type="text/javascript">
  jQuery(document).ready(function () {
    jQuery('#jeYW<?php echo $module->id ?>').weatherfeed([<?php echo "'".$cityCode[0]."'"; for ($i=1; $i<count($cityCode); $i++){echo ",'".$cityCode[$i]."'";}?>],{
      unit: '<?php echo $unit ?>',
      image: <?php echo $image ?>,
      country: <?php echo $country ?>,
      highlow: <?php echo $highlow ?>,
      wind: <?php echo $wind ?>,
      humidity: <?php echo $humidity ?>,
      visibility: <?php echo $visibility ?>,
      sunrise: <?php echo $sunrise ?>,
      sunset: <?php echo $sunset ?>,
      forecast: <?php echo $forecast ?>,
      link: <?php echo $forecastlink ?>,
      showerror: true,
      linktarget: '_blank',
      woeid: <?php echo $woeid ?>
    });
  });
</script>

第二个模块中的代码:

$document->addScript(JURI::base(true).'/modules/mod_muscol_featured_albums/tmpl/jcarousel/lib/jquery-1.2.3.pack.js');

$document->addScript(JURI::base(true).'/modules/mod_muscol_featured_albums/tmpl/jcarousel/lib/jquery.jcarousel.pack.js');

$document->addStyleSheet(JURI::base(true).'/modules/mod_muscol_featured_albums/tmpl/jcarousel/lib/jquery.jcarousel.css');

//...

$document->addScriptDeclaration("
  console.dir(jQuery.fn.init.prototype);
  jQuery(document).ready(function() {
    jQuery('#random_album_".$random_id."').jcarousel({
      // Configuration goes here
      scroll: ".$scroll."
      ".$auto."
      ".$animation."
      ".$circular."
      ".$vertical."
    });
});
");
4

3 回答 3

1

你可以试试jQuery Easy。阅读评论,您将了解该组件有多棒。我已经使用它很长时间了。

特征:

  • jQuery 和 jQuery UI 库可以托管在 Joomla!或以 HTTP 或 HTTPS 从 Google API 库调用(设置显式版本以进行适当的缓存),
  • 前端或后端无需编码(无需将代码添加到模板中或与 Joomla! 核心混淆),
  • 在 MooTools 调用之后放置 jQuery 调用以实现完美兼容性,
  • 添加 noConflict 代码,
  • 在应用程序级别将“jQuery”变量设置为“true”,
  • 去除所有其他 jQuery、jQuery UI 库调用,包括其他模块或插件添加的 noConflict 调用,
  • 选择 jQuery UI 基本样式或自定义主题。
  • 新:可能的专家调整
  • 新:可以在您网站的特定部分启用或禁用该插件
  • 自 v1.2.0 以来的新功能:MooTools 库可以在前端暂时禁用
  • 自 v1.3.0 以来的新功能:报告和更多选项可帮助解决更高级的案例
  • 新:Joomla!3.0特定版本发布
于 2013-04-05T07:34:23.753 回答
0

确保您只有 1 个要导入的 jQuery 副本。为此,请改用它:

if(!JFactory::getApplication()->get('jquery')){
     JFactory::getApplication()->set('jquery',true);
     $document = JFactory::getDocument();
     $document->addScript("http://code.jquery.com/jquery-latest.pack.js");
}

更新:

if尝试在 noConflict 语句上方添加此内容

$document->addCustomTag( '<script type="text/javascript">jQuery.noConflict();</script>' );

希望这可以帮助

于 2013-04-05T07:06:29.140 回答
0

jquery easy 应该可以解决这个问题,或者您可以将其添加到模板 index.php 的头部:

JHtml::_('jquery.framework'); 

这将加载 jquery 1.8.1(或任何 joomla 稳定的 1.8 版本)

在我使用两者的情况下,jquery easy只是禁用mootools并为我添加jquery ui,有一些冲突,这个设置似乎解决了它......

于 2013-04-15T07:41:44.970 回答