2012-05-11 69 views
2

我有一個保留表單,其中列出了用單選按鈕保留一個類的類。如果課程已滿,則會在該課程的單選按鈕上出現一個等候名單複選框。在jQuery中,如果單擊完整的類單選按鈕,我希望jQuery檢查等待列表複選框。 td class =「wailist」將在每一行中顯示,但如果該類已滿,則複選框將僅顯示在HTML中。 我的jQuery如此遠如果在最接近的td.classname中有一個複選框,那麼檢查它

var $class_table = JQuery('table.courses'); 
$class_table.find('input.radio').click(function (event) 
{ 
    //if this row has a td.waitlist with a checkbox in it then check that box 
}); 

下面是HTML片段:

<tr class="course_full"> 
<td class="course_select", colspan=2> 
    <label> 
     <input type="radio" name="course[1][1]" 
       id="course_id_1_9" 
       value="9" 
       > 
     Geometry 2            
    </label> 
</td>          
<td class="credit_recovery"> 
    <label> 
     <input type="checkbox" name="credit_recovery[1][9]" 
       id="credit_recovery_id_1_9" 
       > 
    </label> 
</td> 
<td class="waitlist"> 
     <label> 
      <input type="checkbox" name="waitlist[1][9]" 
        id="waitlist_id_1_9" 
        > 
     </label> 
</td> 

我在每一個失敗'這個「最近」「發現」等等也許長度需要參與?

+0

有問題的HTML或頁面鏈接的片段將是有益的 –

+0

更多的澄清需要.. – sha256

+0

它的更好,如果你可以設置在http://jsfiddle.net/上提供你現有的代碼的小提琴然後我們可以在那裏測試並嘗試爲你找到解決方案 –

回答

2

是在click事件的工作?如果不是的話,我會建議:radio選擇:

$class_table.find(":radio").click(function(event) { 

如果是,那麼下一步就是你的複選框相對定位到找到無線電。您可以簡單地使用parent作爲@Imdad建議(或多次調用父代)或closest。裏面回調:

$(this).closest('tr').find('.waitlist :checkbox').attr('checked', true); 

它會找到父行(不管有多深嵌套的單選按鈕),然後用waitlist類搜索複選框列。如果find的結果不爲空,則最後一次調用只會起作用。工作實例在jsFiddle

如果你喜歡導航結構時要明確,你可以找到與2調用parent和一個siblings正確的列,根據你的HTML片段:

$(this) 
    .parent().parent().siblings('.waitlist') 
    .find(':checkbox').attr('checked', true); 

工作示例here,應該產生與第一個相同的結果。

注:清理答案,保持正確的內容)

+0

點擊事件正在工作,我知道這是因爲它添加了一個類來突出顯示行(加上我用了一個警報)。我認爲你的第二個例子應該是正確的,但該框沒有被檢查。我在http://jsfiddle.net/6VUUU/7/上擺弄,但還沒有得到它。奇怪的。我相信你是對的。 – Jazzy

+0

@ user973828我剛剛更新了我的答案(更新2),結果我錯了'最接近'。 – mgibsonbr

+0

甜!那個好漂亮。 – Jazzy

1

試試這個

var $class_table = JQuery('table.courses'); 
    $class_table.find('input.radio').click(function (event) 
    { 
     if($(this).parent().hasClass("waitlist")) 
     { 
     //DO your thing 
     } 
    }); 

如果單選按鈕是不是TD的直接孩子,那麼你可能父母()

你也可以嘗試.parent().next(".waitlist") or .parent().prev(".waitlist")

讓我知道如果不工作

相關問題