2008-10-16 6 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, чтобы добавить новую строку в таблицу каждый раз, когда пользователь выбирает кнопку радио, но только если они находятся в настоящее время на последней строки таблицы. То, что я хотел бы сделать, это получить атрибут имени щелкнутого переключателя, проанализировать его, чтобы получить индекс строки (т. Е. Часть после «_») и сравнить ее с количеством строк в таблице. Если они равны, добавьте новую строку, иначе ничего не сделайте.

Мой вопрос заключается в два раза, в зависимости от того, как я должен атаковать этот:

1) Как вернуть имя атрибута радио-кнопки, ИЛИ 2) Как вернуть индекс строки в строке ввода в настоящее время?

ответ

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 для каждого из переключателей в делах. Onclick будет проверять, проверен ли последний переключатель в этой группе, и если так добавить другой элемент.

Как я уже сказал, он еще не был протестирован. Я не уверен в селекторе (# div_s_0 ... :last), поэтому сначала дайте ему запустить Firebug.

2

Для ваших конкретных вопросов 1 & 2, если вы дали таблицу идентификатор «туЬаЫе», этот пример должен дать вам то, что вы ищете:

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

 Смежные вопросы

  • Нет связанных вопросов^_^