脚本未在joomla模板中加载

时间:2016-08-28 21:43:49

标签: javascript jquery joomla

我正在尝试使用jquery根据日期在我的joomla网站上显示内容。这是正在运作的jsfiddle:http://jsfiddle.net/2BHLd/968/

$(function() {
$(".DateDiv").each(function(index) {
    var sRange = $(this).find(".DateRange").html();
    var arrTemp = sRange.split(" to ");
    var dtFrom = new Date(arrTemp[0]);
    var dtTo = new Date(arrTemp[1]);
    var dtNow = new Date();
    if (dtNow >= dtFrom && dtNow <= dtTo)
        $(this).show();
    });
});

我正在使用Jumi将脚本和css插入到我的页面中并将html放入文章中。 CSS似乎工作得很好,因为它隐藏了html,但由于某种原因,即使当前日期在日期范围内,脚本似乎也没有显示文本。

http://askc.org/galacticos/index.php/events/upcoming-events

这个joomla模板似乎限制了我能做的事情,但我想我在某个地方犯了一个简单的错误,我花了两个小时试图修复它无济于事。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您正在使用$来引用jQuery,而Joomla因为遗留原因而为mootools保留了这些内容。

只需使用$替换每个出现的jQuery,以便上面的代码如下所示:

jQuery(function() {
jQuery(".DateDiv").each(function(index) {
    var sRange = jQuery(this).find(".DateRange").html();
    var arrTemp = sRange.split(" to ");
    var dtFrom = new Date(arrTemp[0]);
    var dtTo = new Date(arrTemp[1]);
    var dtNow = new Date();
    if (dtNow >= dtFrom && dtNow <= dtTo)
        jQuery(this).show();
    });
});

作为替代方案,如果你真的喜欢使用$前缀,你可以用

重新分配它
$ = jQuery;

就在你的剧本之前;但是这可能会破坏依赖于$ mootools的其他功能,并且它不是Joomla首选的方式。

最后,你的代码不是很耐用,

var dtTo = new Date(arrTemp[1]);
如果sRange不包含至少两个项目,

将中断,如果arrTemp项目无法转换为日期,则以下比较将产生不可预测的结果。