gpt4 book ai didi

jquery load() 去除脚本标签 - 解决方法?

转载 作者:行者123 更新时间:2023-12-03 22:28:16 28 4
gpt4 key购买 nike

有人知道 jquery .load() 的解决方法,可以去除从外部内容加载的脚本标签吗?

有很多文档证明这种情况发生,但在网上搜索了大约 4 个小时后我找不到解决方法?

我正在加载动态生成的 div - 类似于搜索结果页面 - 并且需要将 .click() 绑定(bind)到每个动态生成的 div 中的元素。我有一个 php 文件,它执行 html 生成工作并将所有 html 作为字符串返回,但是我无法绑定(bind) jquery .click(),因为包含 jquery 函数的脚本标记被删除。

这是通过调用php文件加载外部内容的代码...

$("#titles_wrap").load("m_scripts/m_php/titles_loader.php", function(){
$..some code
});

这是生成 div 的 php 文件中的循环(效果很好)...

$tag1='<script type="text/javascript">';
$tag2='</script>';

while($result_array = mysql_fetch_array($result)) {

if($i2<=($titles_total)){

$_SESSION['titles_string'] .= '<li id="listItem_'.$i2.'">

<div id="titles_list_item">

<div id="titles_list_image_box" style="background-image: url(../../images/thumbs_test/'.$result_array[0].'); background-repeat: no-repeat; ">'.($i2+1).'</div>
<div id="title_php_loader"></div>
<div id="title_info_wrap">

<div id="title_current"><span class="title_current_grey" >current title: </span><br>'.$result_array[1].'
</div>

<div id="title_form_wrap">
<span class="title_current_grey" >new title: </span><br><input name="title_input_'.$i2.'" id="title_input_'.$i2.'" type="text" class="title_input"></input>
<div id="title_send" class="title_send_'.$i2.'">GO</div>
</div>

</div>


'.$tag1.'
$(".title_send_'.$i2.'").click(function(){$("#title_php_loader").load("m_scripts/m_php/title_sender.php")})
'.$tag2.'

</div>
</li>';
$i2++;
}
}

抱歉,如果第二个代码块有点“过度”,请告诉我简化的摘录是否会更有用。也就是说,您可以在 php 代码最后一行的第 8 行看到 jquery 函数,该函数应该使用动态分配的选择器写入每个 div 中。

当然,代码中可能还有其他错误,但是我无法测试它,直到我可以让 .load() 停止破坏它!

如果有人找到了解决这个问题的方法 - 或者甚至是有限恩典的解决方法 - 太棒了!

提前致谢,

干杯,

斯科特

编辑-编辑-编辑-编辑-编辑-编辑-编辑-编辑

@T.J.克劳德@Frug

感谢您的帮助!

我刚刚仔细查看了您的演示中涉及的页面,是的,我看到您已经可以正常工作了。看起来很神奇,因为它们就在那里 - 那些脚本标签,而且有很多人无法让它工作 - 不幸的是我就是其中之一!

我发现您的演示和我的代码情况之间的唯一区别是

1)开始脚本标记中没有类型声明,

2) 你正在加载一个带有脚本标签作为 DOM 一部分的页面,而我正在加载 php 字符串输出(我真的不认为这很重要,是吗?当它到达客户端时,一切都发生了都是同样的事情,不是吗?)

3),您的 .load 调用正在获取整个页面,而我的仅返回元素。我已经更改了输出字符串以包含所有 , 和 标签,但是 grrrrrrr...我仍然无法让该死的脚本标签显示在 DOM 中。

有什么建议吗?有些负载我不知道,所以可能是任何东西!谢谢S

最佳答案

立即更新,您可以在 jQuery 文档网站上找到它:

http://api.jquery.com/load/

仅当您使用特定后缀选择器调用加载时,它才会删除标签..

脚本执行

当使用不带后缀选择器表达式的 URL 调用 .load() 时,内容会在删除脚本之前传递给 .html()。这会在脚本 block 被丢弃之前执行它们。但是,如果使用附加到 URL 的选择器表达式来调用 .load(),则脚本会在更新 DOM 之前被删除,因此不会执行。这两种情况的示例如下:

在这里,任何作为文档一部分加载到 #a 中的 JavaScript 都将成功执行。1

$('#a').load('article.html');

但是,在以下情况下,加载到 #b 中的文档中的脚本 block 将被删除并且不会执行:1

$('#b').load('article.html #target');

关于jquery load() 去除脚本标签 - 解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036870/

28 4 0