2008-10-16 170 views
2

新來javascript/jquery和難以用「this」或「$(this)」來獲取當前對象。jQuery多個單選按鈕

我有一個在每一行上都有一組單選按鈕的表,每個名稱都是's_'。單選按鈕沒有被默認選中:

<tr> 
    <td align="left" style="width: 300px"> 
     <div id="div_s_0"> 
     <input type="radio" name="s_0" value="1" />Public 
     <input type="radio" name="s_0" value="2" />Not Public 
     <input type="radio" name="s_0" value="3" />Confidential 
     </div> 
    </td> 
</tr> 
<tr> 
    <td align="left" style="width: 300px"> 
     <div id="div_s_1"> 
     <input type="radio" name="s_1" value="1" />Public 
     <input type="radio" name="s_1" value="2" />Not Public 
     <input type="radio" name="s_1" value="3" />Confidential 
     </div> 
    </td> 
</tr> 

我試圖寫一個jQuery函數到一個新的行添加到當用戶選擇一個單選按鈕表,但前提是他們目前的表格的最後一行。我想要做的是獲取單擊單選按鈕的name屬性,解析它以獲取行索引(即'_'後面的部分)並將其與表中的行數進行比較。如果它們相同,則添加一個新行,否則,不執行任何操作。

我的問題是雙重的,這取決於我應該怎麼攻擊這個:

1)我如何返回一個單選按鈕的名稱屬性,或者 2)如何返回第i行的行索引我現在在嗎?

回答

5

這將讓你的索引,使用您所提供的HTML:

$(document).ready(function() { 
    $("input:radio").click(function() { 
     var index = parseInt(this.name.split('_')[1]) 
    }); 
}); 

另一件事,可以幫助你:檢索你的表中的行數:

$($("table").children()[0]).children().length 

希望這可以幫助你在路上。

0

下面是一些未經測試的代碼,把我的頭頂部:

$("#div_s_0 input[type='radio']").onclick = function() { 
    if ($("#div_s_0 input[type='radio']:last").attr('checked') == 'checked') { 
    /* add a new element */ 
    } 
} 

,做什麼是附加一個onclick事件到每個div中單選按鈕。 onclick將檢查該組中最後一個單選按鈕是否被選中,如果是,則添加另一個元素。

就像我說的它還沒有經過測試。我不確定選擇器(#div_s_0 ... :last),所以先讓它在Firebug中運行。

2

爲了您的具體問題1 & 2,如果你給你的表的ID「MYTABLE」,這個例子應該給你你在找什麼:

var rowIndex = $("#mytable tr").index($(this).parents("tr")); 
var inputName = $(this).attr("name"); 
alert("Input Name: " + inputName + "; RowIndex: " + rowIndex);