我可以使用jquery .Hide()来应用.On()以隐藏新添加的内容

时间:2015-08-11 14:26:35

标签: javascript jquery html ajax

我正在处理一个Web应用程序,我想删除所有带有“问题”一词的<a>。所以我写下面的脚本: -

<script>
$( document ).ready(function() {

    $('a.ms-pivotControl-surfacedOpt:contains("question")').hide();
});
</script>

现在我有了这个行为: -

  1. 首次加载页面时,脚本将能够正确隐藏所有内容。

  2. 但如果我点击一个按钮,它将以基于Ajax的方式刷新页面,那么将显示其中包含“问题”的内容(该脚本不会产生任何影响)。

  3. 所以我认为问题是脚本无法理解新添加的内容。我记得在旧的jquery版本中我用来定义.Live()以保持我的脚本生效并理解新添加的内容,所以这可能在我上面的脚本中吗?

2 个答案:

答案 0 :(得分:1)

on()和已弃用的live()仅用于事件委派,不适用于DOM操作或插件初始化。

当你需要操作新插入的html或在其上初始化插件时,没有办法委托它,你需要使用ajax的回调来做它。

使用最简单的ajax方法load()

的示例
$('#container').load('somefile.html',function(){
   // new html exists, "this" is initial selector element
   $(this).find('.someClass').hide();    
});

答案 1 :(得分:1)

在ajax的成功处理程序中,在处理后添加以下行:

 $('a.ms-pivotControl-surfacedOpt:contains("question")').hide();