Javascript.RU

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

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

<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
Сообщений: 5,100

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

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

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

Сообщение от micscr
Думаю :input убыстрит то выборку, чем все теги на атрибуты перебирать.
На первый взгляд может показаться так, но ":input" не нативный селектор, в отличие от "[attr=value]", а jQuery расширение, точнее селекторного движка Sizzle расширение, который в jQuery используется. jQuery нам говорят, что нативные селекторы якобы дают преимущества производительности, так как могут использоваться напрямую с нативным методом querySelectorAll. Может они нас обманывают? Тогда надо копаться в Sizzle) Сам Sizzle можно вообще вырезать и останется только нативный querySelectorAll, так что разработчики jQuery тоже не дремлют, и библиотека еще будет долго актуальна)

Последний раз редактировалось Rise, 14.07.2018 в 17:39.
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2018, 17:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 23,775


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

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

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


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

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



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

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


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