2010-08-27 2 views
1

У меня есть несколько элементов, которые имеют идентификаторы (и имена) в виде:jquery: Получить значение от id = "foo [1]"?

id="foo[1]" 
id="foo[2]" 

Однако, я не могу показаться, чтобы получить значение обратно с помощью:

$('#foo[1]').val(); 

Что такое правильный синтаксис для доступа к этим многомерным массивам в JQuery.

Спасибо.

ответ

2

$('[id=foo\[1\]]') будет выбирать те рода ид

http://jsfiddle.net/UaxC2/

+0

да! ... но учтите также, что в этой ситуации это не хорошо, потому что это не действительный html. ;) – Reigel

0
$('#foo[1]').val(); // you missed # which denotes id 

с другой стороны, $('#foo[1]').val(); не будет работать, потому что скобки для атрибутов, например, $('#foo[name]') получит элемент с idfoo и с именем атрибута ann.

+0

Это не работает из-за скобки :( – tster

+1

@tster: вам нужно бежать: $ ('#foo \\\ [1 \\\]'). val(); –

+0

см. правки – Reigel

1

Я бы рекомендовал использовать id = "foo_1" и id = "foo_2" вместо скобок (он будет играть лучше).

Тогда правильный синтаксис: $('#foo_1').val() (вам не хватает "#")

Edit: Похоже, ваши идентификаторы не являются действительными HTML:

из http://www.w3schools.com/tags/att_standard_id.asp

Определяет уникальный идентификатор элемента. Правила именования:

должны начинаться с буквы AZ или AZ может сопровождаться: буквы (A-Za-Z), цифры (0-9), дефис ("-"), подчеркивания (» _ "), двоеточия (": ")., и периоды (" ") Значения чувствительны к регистру

+0

ах я так и не знал, спасибо :) –

1

Квадратные скобки не являются законными в идентификаторах. HTML data types говорит:

ID и NAME лексемы должны начинаться с буквы ([A-Za-Z]) и может сопровождаться любым количеством букв, цифр ([0-9]), дефисы («-»), подчеркивания («_»), двоеточия («:») и периоды («.»).

Кроме того, для выбора и идентификатора вам необходимо ввести свой селектор в #, $ ('# foo').

+0

Это не законно, но он много используется в формах, поэтому я могу разобрать его через PHP и получить доступ как многомерный массив. # Есть в моем исходном коде -> просто пропустил его при повторной печати :-) – niggles

0

Во-первых, если вы собираетесь получить элемент по идентификатору, вы должны добавить "#" перед идентификатором,

$ ('# Foo [1]).

Во-вторых, $() вернет все элементы, соответствующие заданному шаблону, поэтому вы получите все элементы с этим идентификатором.

0

Использование foo[1] не реально сделать это многомерный массив, и вы не можете явно использовать скобки [], как, что, JQuery имеет селектор, который использует это, так что вам нужно использовать $('div[id="foo[2]"]'), чтобы заставить его работать, демонстрация прилагается. Я бы рекомендовал использовать только foo1.

Demohttp://jsfiddle.net/RSRSQ/

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