Получение правильного индекса из входного массива в JQuery
Как получить правильный индекс выбранного ввода из набора элементов ввода с нерегулярно пронумерованными индексами с помощью JQuery? Функция "индекс" JQuery всегда возвращает значение, начинающееся с 0 вместо индексов, которые я использовал. Мой код ниже:
JQuery
$("input[name^=myboxes]").click(function() {
var element_id = $("input[name^=myboxes]").index(this);
alert(element_id); //will alert 0, 1, or 2 instead of 3, 8, or 10
});
HTML:
<input type="checkbox" id="myboxes[3]" name="myboxes[3]" value="CHECKED" >
<input type="checkbox" id="myboxes[8]" name="myboxes[8]" value="CHECKED" >
<input type="checkbox" id="myboxes[10]" name="myboxes[10]" value="CHECKED" CHECKED >
Спасибо!
Ответы
Ответ 1
Значение вашего идентификатора не имеет свойства "index". Это просто строка.
Одно предложение: проанализировать строку id, чтобы получить ваше значение:
$("input[name^=myboxes]").click(function() {
var element_id = $(this).attr('id');
//the initial starting point of the substring is based on "myboxes["
var ix = element_id.substring(8,element_id.length - 1)
alert(ix);
});
Надеюсь, что это поможет
Ответ 2
Следующее - это то, что всегда работало для меня.
JQuery
$("input[name^=myboxes]").click(function() {
var element_id = $(this).attr("meta:index");
alert(element_id);
});
HTML:
<input type="checkbox" id="myboxes[3]" name="myboxes[3]" meta:index="3" value="CHECKED" >
<input type="checkbox" id="myboxes[8]" name="myboxes[8]" meta:index="8" value="CHECKED" >
<input type="checkbox" id="myboxes[10]" name="myboxes[10]" meta:index="10" value="CHECKED" CHECKED >
Надеюсь, что это поможет.
Ответ 3
В выбранном ответе есть несколько проблем с синтаксисом:
$("input[name^=myboxes]").click(function() {
var element_id = $(this).attr('id');
//the initial starting point of the substring is based on "myboxes["
var ix = element_id.substring(8,element_id.length - 1);
alert(ix);
});
Ответ 4
было бы еще короче, если вы сделаете это так:
var id = $(this).attr('id');
// remove everything that is not a number
id = id.replace(/[^0-9]/g, '');
alert(id);