2010-03-04 60 views
0

我有一個佈局像這樣的表:jQuery來隱藏表格單元格內容

<table> 
    <tr> 
    <td>checkbox</td> 
    <td>text-text-text</td> 
    <td>dropdownlist</td> 
    <td>textbox</td> 
    </tr> 
</table> 

我試圖切換基於複選框的檢查狀態的下拉列表,文本框的可見性。我已經設置了一個能夠正確執行此操作的單擊事件,但是它不會在加載新數據時保留行的可見性。我如何在JQuery中做到這一點?

編輯:這是連接到複選框上的單擊事件的功能。它正確切換elemtns的可見性。我遇到的問題是從數據庫中加載新行,從正確的可見性開始。 (我在asp.net中使用中繼器控件來構建表,所以我將客戶端ID傳入函數中)。

簡體中文:我有一個表格,在每行的第一個單元格中有一個複選框,我將使用jQuery中的選擇器從複選框中獲取該行中其餘單元格的內容。

function ToggleVisibility(position, hometown, state, checkbox, name, license) { 
     if ($("#" + checkbox)[0].checked) { 
      $("#" + position).css('visibility', 'visible').fadeIn('slow'); 
      $("#" + hometown).css('visibility', 'visible').fadeIn('slow'); 
      $("#" + state).css('visibility', 'visible').fadeIn('slow'); 
      $("#" + name).css('font-weight', 'bold'); 
      $("#" + license).css('font-weight', 'bold'); 
     } 
     else { 
      $("#" + position).css('visibility', 'hidden').fadeOut('slow'); 
      $("#" + hometown).css('visibility', 'hidden').fadeOut('slow'); 
      $("#" + state).css('visibility', 'hidden').fadeOut('slow'); 
      $("#" + name).css('font-weight', 'normal'); 
      $("#" + license).css('font-weight', 'normal'); 
     } 
} 
+0

我們能否看到JS請 – 2010-03-04 14:20:03

回答

1

要做到這一點的唯一方法是使用Ajax將更新的狀態持久化到服務器。例如:

<input type="checkbox" id="cb1" class="save"> 

有:

$(":checkbox.save").click(function() { 
    $.post('/save.php', {id: this.id, checked: this.checked}); 
    $("rowid").toggle(this.checked); 
}); 

然後當服務器呈現頁面就可以查詢持久頁面狀態和正確呈現控件和行。

+0

不,這不是唯一的方法... – Guffa 2010-03-04 14:29:39

+0

我使用的是asp.net,並且我沒有讓值持續存在問題,這只是讓他們在加載它們之後具有正確的可見性,因爲複選框上沒有發生「點擊」。 – Barry 2010-03-04 14:35:29

+0

@Barry:最好的方法是使用由服務器動態生成的內聯CSS(或者甚至是內聯JS),以正確的狀態啓動事物。或者,您可以添加一個函數,將所有內容都置於正確的狀態,並在準備好的文檔中調用它。 – cletus 2010-03-04 14:53:18

0

你可能想看看的liveQuery,這是jQuery的一個插件: Livequery

0

把你想在一個DIV隱藏的項目和隱藏DIV,而不是表格單元格。

相關問題