Использование массивов в Jquery - PullRequest
0 голосов
/ 30 мая 2010

Вот код:

<input type="button" id="array[1]" value="Value1" />
<input type="button" id="array[2]" value="Value2" /> 
<input type="button" id="array[3]" value="Value3" /> 

И я хочу сделать что-то подобное:

$('#array').click(function() {
    id = this.id;       
    $.ajax({
        here goes type, url, data and else
    });     
})  

Я хочу id добавить номер массива. Например, если я нажму кнопку, где id равен array[3], то id получит значение 3 в функции Jquery. Надеюсь, вы поняли, что я имею в виду.

Ответы [ 7 ]

5 голосов
/ 30 мая 2010

Прежде всего, вы не должны использовать [] в значениях идентификатора ... только a-zA-Z0-9-_.:

посмотрите атрибут html ID для получения дополнительной информации о спецификациях ..

вы должны назвать их как id_1 и извлечь число с помощью регулярных выражений, как предлагают другие ответы ...
( помните, что вы не можете начинать значение id только с числа a-zA-Z )

3 голосов
/ 30 мая 2010

Избавьтесь от атрибутов ID, добавьте общий класс array и присвойте им всем имя array[].

Тогда используйте это в своем jQuery;

$('input.array').click(function() {
    var id = $(this).val();      
    $.ajax({
        here goes type, url, data and else
    });     
})  
0 голосов
/ 30 мая 2010

Я думаю, что могу помочь вам решить эту проблему. Насколько я понимаю, входные идентификаторы начинаются с ключевого слова array и содержат оригинальный идентификатор в скобках, который вы хотите получить и отправить при вызове ajax. Для элементов, которые начинаются с некоторой предопределенной строки, вы можете использовать $ ("[name ^ = value]") селектор jquery.

$("input[id^='array']").click(function() {
    var id = parseInt($(this).attr("id").split("[")[1].slice(0,-1));     
   //above variable should contain whatever you put inside brackets. 
    $.ajax({
        here goes type, url, data and else
    });     
});

Это должно дать желаемые результаты. ура Аяз Алави

0 голосов
/ 30 мая 2010

если вы храните контент в своих элементах, я бы использовал data- * для их хранения. Например, вместо массивов я бы использовал строку json

<input type="button" class='array' data-json="{id:22,defualt_val:'Value1'}" value="Value1" />

тогда в вашем коде JavaScript я бы использовал!

$('input[data-json]').click(function(){
    $data = $('[data-json]',this)
    $.ajax({
        data:$data
    });     
}) 

Это метод, используемый для хранения контента в таком элементе, как original-title и т. Д.

0 голосов
/ 30 мая 2010

грубый подход:

$(this).attr("id").replace(/[^0-9]*/ig, "")

Полный пример:

<!DOCTYPE html>
<html>
<head>
    <title>2939346</title>
    <script src="http://www.google.com/jsapi"></script>
    <script>google.load("jquery", "1");</script>
    <script type="text/javascript" charset="utf-8">
        $(document).ready(function(){
            $("input[type=button]").click(function(){
                alert($(this).attr("id").replace(/[^0-9]*/ig, ""));
            });
        });
    </script>
</head>
<body>
    <input type="button" id="array[1]" value="Value1" />
    <input type="button" id="array[2]" value="Value2" /> 
    <input type="button" id="array[3]" value="Value3" />
</body>
</html>
0 голосов
/ 30 мая 2010

Используйте регулярное выражение для извлечения числа

var reId = /[(\d+)]/;
$('#array').click(function() {
    var id = reId.exec($(this).attr("id"))[0];       
    $.ajax({
        //id is now a string containing only the number
    });     
})  
0 голосов
/ 30 мая 2010

Я бы попробовал добавить класс для каждого массива.

<input type="button" class='array' id="array[1]" value="Value1" />
<input type="button" class='array' id="array[2]" value="Value2" /> 
<input type="button" class='array' id="array[3]" value="Value3" /> 


$('.array').click(function() {
   var id = $(this).attr('id');       
    $.ajax({
        here goes type, url, data and else
    });     
})  

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...