2013-07-07 4 views
-1

Я пытаюсь использовать переменную внутри JQuery Selector в сочетании с Id для выбора правильного входного значения, так как у меня есть несколько форм. Как я могу использовать переменную и селектор id вместе?Использование переменной внутри JQuery Selector

Мой код:

$("form").submit(function() { 
    var id = $(this).attr("id"); //this grabs the id of the form being submitted 
    var name = $("id #name").val(); <-- this is the line in question 
}); 

Спасибо!

+4

С помощью стандартного яваскрипта строкового конкатенацию, ' $ ('#' + id + '#name'). val(); ' – Ohgodwhy

+2

Учитывая, что' id' должен быть уникальным, вы можете просто сказать '$ (« # name »). val()'. – nnnnnn

+0

Почему вы получаете идентификатор формы? Вы можете использовать представленный элемент формы. – pasine

ответ

1

Вы просто конкатенации строку:

id + ' #name' 

, что делает

var name = $(id + " #name").val(); 

что странно, потому что id, вероятно, не является элементом, поэтому вам нужно добавить #:

'#' + id + ' #name' 

, который по-прежнему нечетный, поскольку вы используете идентификатор id Ely.

0

Просто создать строку выбора, как и любой другой строки:

var name = $("#" + id).val(); 
4

Поскольку идентификаторы должны быть уникальными, все, что вам действительно нужно, это $('#name').

В любом случае, если вы хотите найти элемент внутри другого, и у вас уже есть ссылка на этот элемент, не объединяйте селектор (что, если элемент не имеет идентификатора?). Вместо этого используйте методы обхода, например .find. Например:

var value = $(this).find('input[name="name"]').val(); 

Посмотрите все методы обхода: http://api.jquery.com/category/traversing/tree-traversal/.

Если вам действительно нужно построить селектор динамически, используйте конкатенацию строк, как уже упоминалось. Селектор - это не что иное, как строка. Пример:

$('input[name="' + inputName + '"]') 
+0

+1. Я почти закончил вводить комментарий об использовании '' input [name = "name"] '', когда вы его редактировали. – nnnnnn

0

Вы можете сцепить строки для создания правильного выбора, или вы можете использовать путь:
$('#name', this).val(), то есть такие же, как написать $(this).find('#name').val()

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