2

我正在爲我的項目使用jquery UI選項卡。請檢查html代碼如何清除jquery中未激活的內容?

<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文件中取出,

<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,其他選項卡(選項卡-1,選項卡-3,選項卡-4)的內容應該清楚。這一個在zend上保存我的驗證。

請在此建議。

+1

你限制了與ID標籤或者這些是動態的 – 2012-01-10 12:35:46

回答

2

你成功函數內清空所有其他的div

$('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

$('.load_cont').click(function() { 
    var clickedEl = $('#'+gnameArr[0]); 
    ... 
    success:functi... 

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

... 
+0

非常有幫助 – mymotherland 2012-01-10 13:14:57

+0

非常歡迎) – Irishka 2012-01-10 13:22:06

0

或者,你可以設置容器元素與同類的,如.container

// Clear all container before you set the new one. 
$('.container').html(''); 
0

怎麼是這樣的:

$('.load_cont').click(function(){ 
    $('.load_cont').not($(this)).each(function(i,el){ 
      $($(el).attr('href')).empty(); 
    }); 
}); 
0

選擇不選擇一個的div,並清除他們都:DIV

$('#tabs > div:not(#' + gnameArr[0] + ')').empty();