当我调用 .load 函数时,它会给我带来 HTML 代码,但它会清除<script>
内容,即来自 cards.tpl.php 的代码:
<script type="text/javascript">
//anything
</script>
<div style="float:right" class="blah">
<!-- anything -->
</div>
index.php 中的代码:
<div id="cards">
<?php include 'tpl/cards.tpl.php'; ?>
</div>
...
<script type="text/javascript">
$('#drawCard').click(function(){
$('#cards').load("tpl/cards.tpl.php",function(){
});
});
</script>
当 PHP 包含内容时,它包含<script>
,但是当我单击#drawCard 时,JavaScript 只会给我带来 div。我刚刚看到 .load 实际上删除了脚本标签,但是它们被执行了,绑定事件在执行后是否仍然存在?
编辑:
好的,最后我找到了解决这一切背后的问题的方法。使用 load() 来调用<script></script>
包含事件绑定代码的代码会让您头疼不已。不要这样做!如果您真正的问题是在使用 $.load() 函数后处理绑定问题,那么我建议您执行以下操作:
使用 livequery('click')将所有 click(), on('click') 事件替换为名为livequery的插件,它可以 100% 工作。
不是带着提出一个新问题的心情,而是当 JQuery 不能按预期工作时,为什么 JQuery 会告诉你用 on() 替换 live()?
为 JAAulde 编辑
<div id="cards">
<!-- this content is replaced -->
<div value="t1" class="impar tecnologia unselected investigated notUsed">stuff</div>
</div>
<!-- end of content replaced-->
</div>
并使用这个 jQuery 代码:
$("#cards").on('click','.unselected',(function(e){}));
这在加载前有效,在加载后无效