首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery清除未激活的内容?

如何使用jquery清除未激活的内容?
EN

Stack Overflow用户
提问于 2012-01-10 20:23:12
回答 4查看 245关注 0票数 2

我正在为我的项目使用jquery UI选项卡。请检查html代码

代码语言:javascript
复制
<div id="tabs">
    <ul>
        <li><a href="#tabs-1" id="preload" class="load_cont" rel="tabs-1||general">General</a></li>
        <li><a href="#tabs-2" class="load_cont" rel="tabs-2||admin_products">Admin Products</a></li>
        <li><a href="#tabs-3" class="load_cont" rel="tabs-3||admin_category">Admin Category</a></li>
        <li><a href="#tabs-4" class="load_cont" rel="tabs-4||admin_others">Others(Admin)</a></li>
    </ul>
    <div id="tabs-1"></div>
    <div id="tabs-2"></div>
    <div id="tabs-3"></div>
    <div id="tabs-4"></div>
</div> 

当我单击一个选项卡时,我会使用ajax获得表单,它工作得很好。检查下面的js代码,该代码取自phtml文件。

代码语言:javascript
复制
<script type="text/javascript">
    $(function(){

        // Tabs
        $('#tabs').tabs();                        
        //hover states on the static widgets
        $('#dialog_link, ul#icons li').hover(
        function() { $(this).addClass('ui-state-hover'); }, 
        function() { $(this).removeClass('ui-state-hover'); }             
    );

        $('.load_cont').click(function()
        {
            var groupname;
            var id = $(this).attr('rel');
            var gnameArr = id.split('||');
            groupname = gnameArr[1];

            //alert(gnameArr[1]);
            var url = <?php echo BASE_URL; ?> + '/admin/settings/getqtips/gname/'+groupname;
            //alert(id);
            $.ajax({
                type:'POST',
                dataType:'json',
                url:url+'/math/'+Math.random(),
                data:'',
                success:function(response)
                {   
                    if(response.MSG == 'DONE')
                    {
                        $("#"+gnameArr[0]).html(response.TPL);
                        $('div#'+gnameArr[0]+' #gname').val(groupname);
                    }
                }
            });                   
        }    
    );              
    });
    $(function(){
        $('a#preload').click();
    })
</script>

我的要求是,每当我点击相应的选项卡,我需要清除其他选项卡中的html。也就是说,如果我单击tabs-2,其他选项卡( tabs -1、tabs-3、tabs-4)的内容应该是清晰的。这个保存了我在zend上的验证。

关于这一点,请多多指教。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-10 20:34:25

在你的成功函数中,清空所有其他的div

代码语言:javascript
复制
$('div[id^="tabs-"]').each(function(){  //search for all divs which id starts with 'tabs-'
  if (this.id != gnameArr[0]) { //if this is not clicked one
    $(this).empty(); //clear its content
  }
});

或使用falsarella's tip

代码语言:javascript
复制
$('.load_cont').click(function() {
  var clickedEl = $('#'+gnameArr[0]);
  ...
  success:functi...

  $('div[id^="tabs-"]').not(clickedEl).empty();

...
票数 2
EN

Stack Overflow用户

发布于 2012-01-10 20:36:07

或者,您可以使用相同的类来设置容器元素,例如.container

代码语言:javascript
复制
// Clear all container before you set the new one.
$('.container').html('');
票数 0
EN

Stack Overflow用户

发布于 2012-01-10 20:38:01

这样如何:

代码语言:javascript
复制
$('.load_cont').click(function(){
     $('.load_cont').not($(this)).each(function(i,el){
          $($(el).attr('href')).empty();
     });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8803206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档