2008-10-16 269 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);