【问题标题】:jQuery scripts in the response of Ajax does not workAjax 响应中的 jQuery 脚本不起作用
【发布时间】:2009-01-14 08:21:21
【问题描述】:

我正在使用 jQuery $.load() 函数从服务器获取内容。 加载的内容包含:

<p id="p1">123</p>
<script>   
 $(document).ready(function(){
      $('#p1').html('ABC');
      alert($('#p1').html());
 });
</script>

将段落文本更改为“ABC”不影响页面,但 alert() 显示“ABC”。

【问题讨论】:

  • 哈哈...当您发表评论时,我输入了完全相同的两件事作为答案。并不是要抄袭,如果你真的想的话,很乐意为你提供一些代表:)。
  • 你能澄清一下你的问题吗?

标签: jquery ajax


【解决方案1】:

我认为您的选择器不正确。 $('#p') 将选择 id 为“p”的元素(尽管原则上应该只有一个,但这是分开的)。不是全部

元素。所以我认为你的意思是 $('p') 或 $('#p1')。

【讨论】:

    【解决方案2】:

    如果您通过 .load() 加载它,请摆脱周围的 $(document).ready();少量。这不是必需的,因为 DOM 已经加载。您的脚本应该按照您的预期运行。

    不要忘记将 type="text/javascript" 添加到您的脚本标签,以确保它不会破坏任何内容。

    如果您仍然遇到问题,请尝试使用 .load() 的回调函数,例如。

      $("#somediv").load('some.html',{ /* empty data arg */ },function(){
        $("#p1").html('ABC');
      });
    

    【讨论】:

      【解决方案3】:

      "#p" 选择器查找 id 为 "p" 的 DOM 元素 - 这里没有类似的东西。

      正确的选择器应该是“#p1”。

      另外,要在节点中设置文本,请使用 text(): (参见http://docs.jquery.com/Manipulation 中的文本(val))

      $("#p1").text('ABC');

      【讨论】:

        【解决方案4】:

        呃,当内容被加载时,文档不是已经“准备好”了吗?警报真的会触发吗?如果是这样,我同意 arnab_deka:使用 .text() 方法。

        【讨论】:

        • 如果 doc ready 已经并且过去,那么将来解析的任何 doc ready 函数都将立即执行
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 2017-12-06
        • 2016-04-12
        • 2011-01-10
        • 1970-01-01
        相关资源
        最近更新 更多