2

javascript/jquery 新手,很难使用this$(this)获取当前对象。

我有一个表,radio buttons每行都有一组,每个名为s_<rowindex>. 默认情况下不选中任何单选按钮:

<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 函数,以便在用户选择单选按钮时向表中添加新行,但前提是它们当前位于表的最后一行。我想做的是获取单击的单选按钮的名称属性,对其进行解析以获取行索引(即'_'之后的部分)并将其与表中的行数进行比较。如果它们相等,则添加一个新行,否则,什么也不做。

我的问题是双重的,取决于我应该如何解决这个问题:

1) 如何返回单选按钮的名称属性,或者 2) 如何返回当前所在行的行索引?

4

3 回答 3

5

这将为您提供索引,使用您提供的 HTML:

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

另一件事可能对您有所帮助:检索表中的行数:

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

希望这对您有所帮助。

于 2008-10-16T19:36:58.107 回答
2

对于您的具体问题 1 和 2,如果您为您的表提供了“mytable”的 ID,则此示例应该为您提供所需的内容:

var rowIndex = $("#mytable tr").index($(this).parents("tr"));
var inputName = $(this).attr("name");
alert("Input Name: " + inputName + "; RowIndex: " + rowIndex);
于 2008-10-16T20:04:44.693 回答
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 中运行它。

于 2008-10-16T19:29:56.107 回答