使用jQuery清除动态加载元素的innerHTML

时间:2012-11-12 16:30:24

标签: javascript jquery html ajax

我读过的所有内容都更多地引用了使用.live(),. on(),. bind(),. delegate()等添加的事件处理程序。

我之前问了一个可能没有正确反映的问题,所以我投票删除了那个并重新问了一个更简单的问题,我可以做其余的事情,我相信。

有没有办法清除带有预定义类的HTML元素的innerhtml,包括通过AJAX动态加载的类等。

所以每次ajax调用都会出现

<div class="triggerElement">something here...</div>

或页面上的类似内容,我需要将其清空。我想我已正确解释过了。如果没有,请告诉我。

修改

似乎很混乱。 .empty&amp;其他喜欢的东西都行不通。如果你打电话

$(".omButton").empty();

从索引,然后一些其他模块稍后通过AJAX加载同一个类,它不会清空它。如果我首先在页面上有元素,那么调用它,是的它会起作用....

我需要一些基于.live或.delegate的内容,这些内容适用于事后加载的任何内容,因为我已经尝试过.empty和.html,并且对于使用AJAX加载的内容都不起作用。

不知道怎么解释这个。以为这很简单。遗憾!

编辑2 ......

索引包含空函数

$(function(){
    $('.omButton').empty();
    $ajax... to load "loadedContent"
});

<div class="omButton"></div>
<div id="loadedContent"></div>

ajax返回

json_encode(array('test' => '<div class="omButton">Button Text</div>'));

所以现在索引上的HTML是

<div id="loadedContent"><div class="omButton">Button Text</div></div>

但是由于加载页面时内部div不存在,因此.empty不会影响它。我需要一些我可以放在页面上的负载“监视”它的任何出现(静态或动态)并清空它。

希望有帮助吗?

3 个答案:

答案 0 :(得分:5)

尝试使用$.ajaxComplete() - 因为这是在每个ajax请求完成后触发的

$('body').ajaxComplete(function() {
  $('.triggerElement').empty();
});

答案 1 :(得分:1)

试试这个。 .empty

$.ajax({
    ...
    complete: function(){
        $(elementSelectorForWhatYouWantEmptied).empty();
    }
})

或者如果加载的元素动态放置在DOM中,那么您可以使用.live()

$(elementThatIsInDOM).on(event, elementSelectorThatIsDynamicallyAdded, function(){
    $(elementSelectorForWhatYouWantEmptied).empty();
})

答案 2 :(得分:0)

如果您使用ajax加载内容,并且该内容是内容为

的完整标记
<div class="triggerElement">something here...</div>

并且你希望在加载之后empty该元素,你需要在加载数据时执行的回调中执行该操作。

$.ajax(
    ....
    success: function(data){
      $(".omButton").empty();
    });