【问题标题】:jQuery and load(). Unable to change inner HTML in loaded class [duplicate]jQuery 和加载()。无法更改加载类中的内部 HTML [重复]
【发布时间】:2016-12-09 10:18:39
【问题描述】:

我正在尝试通过此函数更改加载的 div 中的内部 HTML:

$("#container").load("site.php");

site.php 我有<div class="users_count">,我想在里面放一些文字。我正在尝试使用$(".users_count").html("TEST"),但由于jQuery 看不到.users_count 类,因此无法完成。

我听说过 jQuery on()live(),但它需要一些事件,例如 click, keyup etc...

我需要在没有任何事件的情况下在这个 div 中放置一些文本 - 只需在我的函数中执行,无需用户操作。

【问题讨论】:

  • 请在此处发布您的完整代码
  • 下次问这种基本问题之前请先搜索一下。类似的问题已经被问过很多次了,我们不需要更多重复的问题。

标签: javascript php jquery html load


【解决方案1】:

您可以使用 load() 的完整回调:

如果提供了“完成”回调,则在后处理和 HTML 插入完成后执行。

$("#container").load("site.php", function() {
    $(".users_count").html("TEST")
});

【讨论】:

  • 类似的问题已经被问过很多次了(你可以通过搜索“jquery access loaded element”找到一些)。您应该找到一个好的重复目标并关闭此问题,而不是回答它。
【解决方案2】:

$.fn.load() 是异步的,你可以使用complete 回调:

$("#container").load("site.php", function(){
  $(this).find('.users_count').html('TEST');
});

$(this).find('.users_count') 而不是 $('.users_count'),因为最好设置相关上下文,在大多数情况下,您不希望目标元素不是加载内容的后代,这取决于使用的 selector。在你的情况下,它什么都不会改变,但有时谁知道......

【讨论】:

  • 类似的问题已经被问过很多次了(你可以通过搜索“jquery access loaded element”找到一些)。您应该找到一个好的重复目标并关闭此问题,而不是回答它。
  • @Gothdo ya 当然,但例如,您提出的副本并没有明确解决有关定位加载内容的问题,只有它。但可以肯定的是,可以找到更好的骗子。
【解决方案3】:

你想在加载完成后做一些事情。这是在完整的回调中完成的。

$( "#result" ).load( "ajax/test.html", function() {
  alert( "Load was performed." );
  // Do your stuff here
});

【讨论】:

    【解决方案4】:

    我有另一个解决方案,不需要来自 jQuery 的 live() 上的 on()

    当我在example.php 中的</body> 之前执行$("#container").load("example.php"); 时,我将<script type ="text/javascript" src="myFunctions.js"></script> 包含我想在example.php 中的类中使用的所有函数。

    现在我的 jQuery 函数在查找类或 id 时没有问题,因为它们是用我的 example.php 加载的。

    【讨论】:

    • JavaScript 是高度异步的。越早理解这个概念,您就越早摆脱像这样的hacks
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多