2016-06-22 3 views
0

Можно ли получить все элементы с веб-страницы и создать переменную для каждой из них? можете ли вы создавать переменные в каждой функции и называть их такими же, как имя их элемента?Создать переменные из элементов HTML.

+0

Вы хотите сохранить все переменные элементов DOM в памяти? Я действительно думаю, что это не очень хорошая идея. JQuery ищет элементы при выполнении его функции, поэтому вы должны использовать '$()' ('' 'короткий для имени функции) – demarchisd

+0

Прохладный, да, я просто хотел попробовать сделать это для удовольствия, но я не могу создать переменные в цикле, вот что я хочу. –

ответ

0

Использование:

var div = $('div'); 
div.click(); 
+0

Да, я знаю этот путь, но мне он нужен динамически, поэтому его можно использовать на любой странице. Ему нужно автоматически назначать каждый элемент. –

+0

@TeTPsy не совсем понятно, как вы хотите использовать сохраненную переменную. То, что вы описываете, звучит так, как если бы вы использовали AngularJS, где бы вы загружали разные контенты с помощью отдельных контроллеров. Переменная div, на которую вы ссылаетесь, будет чем-то вроде угловой директивы ... – Snsa90

+0

Спасибо за ответ, как я сказал, его просто для удовольствия, что я имею в виду, я хочу, чтобы каждый мог добавить скрипт на свою веб-страницу, и он будет автоматически создавать переменные из своих элементов и т. Д. –

2

Да, но будьте осторожны.

Полезно хранить ссылку на элемент в переменной, если она присутствует во время загрузки и не изменяется позже, но удаление div после загрузки приведет к тому, что ваша переменная не будет указана. Если div добавляется после объявления переменной, вы также столкнетесь с ошибкой.

Да, читайте here.

+0

Спасибо, да, я вижу, что это не лучший практика, была только что я подумал :) –

+1

@TeTPsy Я читал ваши комментарии, может быть, вы захотите сделать это, создайте метод jQuery, который расширит все элементы класса до объектов с пользовательскими функциями. Вы можете написать метод один раз, и оттуда, каждый расширенный элемент получит поведение оригинала ... – Snsa90

0

Если вы хотите, чтобы связать событие щелчка для всех Div элементов можно легко просто сделать:

var div = $('div'); 
div.click(function(){ 
    //do something 
}); 
+0

Мне нужно, чтобы он был динамичным, как любой может добавить его на свою веб-страницу, и он автоматически сделает переменные из своих элементов и т. Д. –

0

Хороший способ сократить селектор JQuery и накладные и производительность страницы использовать VanillaJS: http://vanilla-js.com/

Выбор объекта - одна из самых простых вещей, связанных с vanilla JS. Я не знаю, в чем ваш прецедент, но многие из тех, что делает jQuery, никогда не используются. Если вы ищете оптимизацию, попробуйте жить без нее на некоторое время, и вы можете быть удивлены. Вот некоторые из готовых способов получить элементы в коротких переменных.

Получить все дивы в документе:

var divs = document.querySelectorAll('div'); 

Получить только первый DIV:

var div = document.querySelector('div'); 

Получить конкретный DIV:

var div = document.getElementById('somediv'); 

Таким образом, вы можете контролировать все (a la carte, вместо того, чтобы пытаться решить все проблемы, которые могут вам не понадобиться).

2

Как вы сказали, что это просто для удовольствия .. так что я думаю, что это должно сделать трюк:

$("*").each(function() { 
    const elmnt = $(this);  
    const id = elmnt.attr("id"); 

    if(id) { 
    window[id] = elmnt; 
    } 
}); 

Это будет только создавать переменные для заморских, преследующих id определены. Но вы можете изменить правило так, как хотите.

+0

Спасибо, чувак , я проверю это, но похоже, что это может сработать :) –

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