为什么我的HTML在“include”中时,JavaScript不起作用?

2 投票
2 回答
699 浏览
提问于 2025-04-16 08:19
{% include "abc.html" %}

在Django中,我把我的html放在这里。

现在,我的javascript不管用了。

$(function(){
   alert('hi');
   $(".div_inside_abc").css("background","#000");

});

我甚至试着把这个javascript放在abc.html的顶部。结果还是不行。

当我这样做的时候:

$(".div_inside_abc").each(function(e){
    document.write($(this).attr("data-rel"));
});

我得到了这个:

{{p.grid_image_ur l}}{{p.grid_image_ur l}}{{p.grid_image_ur l}}{{p.grid_image_ur l}}{{p.grid_image_ur l}}{{p.grid_image_ur l}}

这可不正常!感觉就像Django的模板在我“包含”某些东西的时候没有正常渲染。

相关问题:

2 个回答

0

在abc.html文件中,把{{p.grid_image_ur l}}改成{{p.grid_image_url}}。这可能不是全部问题,但这是个不错的开始。这个页面可能出现了一个错误,但你可能看不到具体的错误信息。

4

如果你把JavaScript代码放在HTML里面,它不会执行(或者说这不是有效的HTML)。如果你想这样做,你得把它包裹在一个SCRIPT标签里(不过我不推荐这样做),或者作为DOM1属性。

如果你想让jQuery在加载时运行这个函数,我建议你把它放在一个外部的JavaScript文件里,并确保这个文件在jQuery之后加载,

$(document).ready(function() {
    alert('hi');
    $(".div_inside_abc").css("background","#000");
});

或者你可以直接把它写在HTML里,像这样,

<script language="javascript">
    $(document).ready(function() {
        alert('hi');
        $(".div_inside_abc").css("background","#000");
});
</script>

在jQuery引入之后。

如果你想让这个函数在任何地方都能被调用,我建议你直接这样调用这个函数(如果你需要作用域的话)

(function(){
    alert('hi');
    $(".div_inside_abc").css("background","#000");

})();

撰写回答