Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2018, 13:07
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

По селекторам
Есть такие например элементы форм(могут быть и селекты и др.):

<input type="text" name="Model[field1]" value="zzz111">
<input type="text" name="Model[field2]" value="zzz222">

Мне нужно, зная только значение атрибута name, выбирать элемент.
var name = 'Model[field1]';
// 1)
//name = $.escapeSelector(name);
// 2)
alert($(':input[name="' + name + '"]').val()); //2.1
alert($('*:input[name="' + name + '"]').val()); // 2.2
alert($('[name="' + name + '"]:input').val()); // 2.3

Два вопроса:
1) Нужно ли тут экранирование? Работает и без него.
2) Какой лучше(чтобы в опенсорс внести вклад) вариант селектора выбрать? Все работают. Смысл чтобы выбрать именно элемент формы.
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2018, 13:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

$('[name="' + name + '"]')
=)
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2018, 13:42
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Если для себя, то оно все работает.
Но хотелось бы оптимально.
Думаю :input убыстрит то выборку, чем все теги на атрибуты перебирать.
Ответить с цитированием
  #4 (permalink)  
Старый 14.07.2018, 17:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Неа, на самом деле наоборот - замедлит.
Потому что :input - нестандартный серлектор, и jquery придётся вручную всё перебирать, в то время как просто [name] будет найден с помощью нативного вызова querySelectorAll.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 14.07.2018, 17:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


$('селектор_родителя [name="' + name + '"]')
Ответить с цитированием
  #6 (permalink)  
Старый 15.07.2018, 04:51
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Можно без селектора, через более быстрые методы.

var element = document.getElementsByTagName(name)[0];


var element = myForm.elements[name];
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2018, 14:13
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

оставлю тогда чисто по атрибуту
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить содержимое файла и искать в нём контент по селекторам jquery raja Общие вопросы Javascript 1 22.09.2016 17:24
Как применить сразу к нескольким селекторам Dimaz jQuery 2 06.12.2012 16:42
Несложный вопрос по селекторам DrFreud jQuery 7 31.08.2011 15:12
поиск по CSS селекторам, YASS Aluc Библиотеки/Тулкиты/Фреймворки 2 03.03.2011 23:17
Вопрос по селекторам jetli13 jQuery 4 18.02.2010 17:43