Прототип: как динамически построить селектор?
-
08-07-2019 - |
Вопрос
У меня возникли небольшие трудности с передачей переменной в селектор в прототипе. Я хотел бы иметь возможность передавать переменную в строку выбора, чтобы одна функция могла работать для многих одинаковых типов.
На данный момент это то, что я хотел бы сделать в основном:
function myFunct(var)
{
$(var + 'add_form').hide() //so inde the brackets would be ('#product1 #add_form') for example.
}
Уметь передавать 'var' в функцию, которая передаст его селектору, чтобы я мог скрыть шаблон, который одинаков для многих на странице.
Будем весьма благодарны за любые идеи, по которым нужно следовать.
Решение
Вы на правильном пути! Пара вещей:
<Ол> var
- это ключевое слово JavaScript ( источник ) , не используйте его для именования переменных #add_form
), вам не нужно добавлять какой-либо элемент контейнера, как вы это делаете class
, вам нужно использовать функцию $$
, а не функцию $
пробелы важны в селекторах css, поэтому обязательно включите их в конструкцию селектора, чтобы Prototype выполнял поиск в вашего родительского контейнера:
function myFunct(parent) {
$(parent + ' .add_form').invoke('hide')
}
myFunct('#someparent'); // hides .add_form inside #someparent
Другие советы
Это должно сработать ... просто переименуйте var
во что-то другое.
function myFunct(yourVar)
{
$('#' + yourVar + ' .add_form').each(function(s){ s.hide(); }); // yourVar being the id of the container element
}
Я поставил «.» перед add_form, потому что вы не можете использовать несколько элементов с одинаковым идентификатором, сделайте его классом.