Получение правильного индекса из входного массива в JQuery - PullRequest
12 голосов
/ 29 января 2009

Как получить правильный индекс выбранного входа из набора элементов ввода с индексами с неправильной нумерацией, используя JQuery? Функция «index» 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 >

Спасибо!

Ответы [ 4 ]

7 голосов
/ 29 января 2009

Вот что всегда работало для меня.

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 >

Надеюсь, это поможет.

7 голосов
/ 01 июня 2010

Выбранный ответ имеет несколько проблем с синтаксисом:

$("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);
});
5 голосов
/ 29 января 2009

Значение вашего идентификатора не имеет свойства 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);
});

Надеюсь, это поможет

0 голосов
/ 07 января 2017

было бы еще короче, если бы вы сделали это так:

   var id = $(this).attr('id');
       // remove everything that is not a number
       id = id.replace(/[^0-9]/g, '');
       alert(id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...