2011-04-20 51 views
4

我有一個擴展和摺疊樹視圖的點擊處理程序,我希望有一些機制,在回發之後,展開/摺疊的同一個節點應保持爲它是。 HTML:如何使jQuery點擊事件在頁面回發後仍然存在

<ul> 
     <li>Africa 
      <ul> 
       <li>Egypt</li> 
      </ul> 
      <ul> 
       <li>SA</li> 
      </ul> 
     </li> 
     <li>Asia 
      <ul> 
       <li>India</li> 
       <li>China</li> 
       <li>Japan</li> 
      </ul> 
     </li> 
     <li>Europe 
      <ul> 
       <li>UK</li> 
       <li>France</li> 
       <li>Germany</li> 
      </ul> 
     </li> 
     <li>America 
      <ul> 
       <li>US</li> 
       <li>Mexico</li> 
       <li>Argentina</li> 
      </ul> 
     </li> 
    </ul> 

的jQuery:

$(function() { 
    $('li:has(ul)') 
    .click(function() { 

      var that = this; 
      $('li:has(ul)').children().filter(':visible').parent().each(function (x) { 
       if (this != that) 
        toggle(this); 
      }); 
      toggle(this); 

    }) 
    .children().hide(); 

    $('li:not(:has(ul))').css({ cursor: 'default', 'list-style-image': 'none' }); 
}); 

任何幫助表示讚賞!

+1

意思?即使表單被刷新?你想讓視圖保持它的位置? – 2011-04-20 06:55:27

+0

我想你應該使用服務器端變量爲此目的,寫一個條件循環並設置一些標誌 – Harish 2011-04-20 06:58:15

+0

是的,我希望視圖保持其位置.. – Misam 2011-04-20 07:01:18

回答

1

您可以試試您的網址後編碼URL只是添加#,哪些應該是解析網址後顯示 像

http://stackoverflow.com/questions/5727626#field1;field 

http://example.com/your_action#field1;field 

領域

var fields = window.location.href.slice(window.location.href.indexOf('#') + 1).split(';'); 

,你將有字段顯示

展開和摺疊將需要在#結束時打開url;

編輯

這裏是如何做到這一點: Demo

<ul> 
    <li id='1'>Africa 
     <ul> 
      <li>Egypt</li> 
     </ul> 
     <ul> 
      <li>SA</li> 
     </ul> 
    </li> 
    <li id='2'>Asia 
     <ul> 
      <li>India</li> 
      <li>China</li> 
      <li>Japan</li> 
     </ul> 
    </li> 
    <li id='3'>Europe 
     <ul> 
      <li>UK</li> 
      <li>France</li> 
      <li>Germany</li> 
     </ul> 
    </li> 
    <li id='4'>America 
     <ul> 
      <li>US</li> 
      <li>Mexico</li> 
      <li>Argentina</li> 
     </ul> 
    </li> 
</ul> 

的Javascript

$(function() { 

    $('li:has(ul)') 
    .click(function() { 

      var that = this; 

     $('li:has(ul)').children().filter(':visible').parent().each(function (x) { 
       if (this != that) 
        toggle(this); 
      }); 
      $(this).children().toggle(); 
     if (window.location.href.indexOf('#')>0){ 
      var href = window.location.href.slice(0,window.location.href.indexOf('#')); 
     }else{ 
      var href = window.location.href 
     } 

     var ids ='' 

     $('li:has(ul:visible)').each(
      function(){ 
       ids=ids+$(this).attr('id')+';' 
      } 
     );  

      window.location = href +'#'+ids; 
    }) 
    .children().hide(); 

    $('li:not(:has(ul))').css({ cursor: 'default', 'list-style-image': 'none' }); 
    var fields = window.location.href.slice(window.location.href.indexOf('#') + 1).split(';'); 

     for (var i in fields){ 
     $('li#'+i).children().toggle(); 
     } 
}); 
相關問題