【问题标题】:Modify div after it's created [duplicate]创建后修改 div [重复]
【发布时间】:2015-12-16 01:32:36
【问题描述】:

我有一个带有菜单的 php 页面。

其中一个菜单项调用另一个 php,该 php 返回一个填充了数据的 div 元素,该元素被插入到前一页(用户已经看到)。

我正在尝试在加载后使用 JavaScript 修改此 div 内容。但是,我做不到。

我尝试过使用ready() 方法,但由于它在加载后随机发生,因此此方法不起作用。

我也尝试了load() 方法,我发现它似乎在项目完全加载后触发,但我也没有完成它。这类似于:

$( "#overlay #overlay_text div #panes div #tableInOverlay" ).load(function() {

  alert("The table has been loaded");  

});

我怎样才能实现它?

提前谢谢你

编辑:为了尽量说清楚

用户访问网页(文件 1)-> 用户点击(文件 1)菜单 -> 文件 2 被调用,这会创建一个带有 div 元素的响应 ->(文件 1)得到响应,并将其插入到 HTML 代码中,这样新的 div 就会显示出来。

那么,此时此刻,我需要(文件1)修改它刚刚收到的这个div。

【问题讨论】:

  • 请添加插入项目的 HTML 代码和脚本。
  • 你的意思是你想在 div 元素被创建之后运行你的脚本? Dom ready 对你来说太慢了?
  • 问题是,div 在单击菜单中的一个链接后被接收,因此另一个 php 文件正在生成它。我需要修改我的第一个文件以便在收到该 div 后对其进行修改,无论时间是什么,而不是在我的第一个文件加载时。
  • @BtcSources 好的,现在我明白了。文件 2 究竟是如何加载的?
  • @Andre 文件 2 只是另一个生成 html sn-p 的 php 文件,该文件被发送回文件 1。我认为它是使用 AJAX 调用的,但不确定因为我没有编码部分。

标签: javascript jquery events


【解决方案1】:

在插入、修改或删除元素时不会触发 html 事件。

可能的解决方案:

1- 在回调中触发偶数:

$('#myDiv').load('url', function(){
    $('#myDiv').trigger('foohappened')
});

$('#myDiv').on('foohappened', function(){
    // modify content
});

注意:myDiv 是页面上的一个元素,而不是通过 ajax 加载的元素

2- 插入前更改数据

$.ajax({
    success: function(data){
        var loadedElement = $.parseHTML(data);
        var modifiedContent = modifyContent(loadedElements);
        $('#myDiv').insert(modifiedContent);
    }
})

【讨论】:

  • 第二个选项似乎适合我的情况。我会继续努力,点赞!
  • 变异观察者呢?嗯?
  • @3.1415926535897932384626433833 突变观察者在我写这个问题的时候是不可用的,而且我可能也不知道它的提议,否则我会提到它作为未来的功能。如果您确实知道如何使用变异观察者,请随时编辑我的答案。
【解决方案2】:

你可以试试这个吗?

$(window).load( function() {
    // YOUR CODE HERE
});

另外,如果您知道延迟量,您可以使用 setTimeout() 推迟您的函数

【讨论】:

  • 如果我将其与alert() 放在一起,则在单击菜单链接后会显示该消息,但是该 div 从未显示,而是似乎返回到网络应用程序。
猜你喜欢
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 2012-12-09
  • 2021-02-22
  • 1970-01-01
相关资源
最近更新 更多