Прототип: как динамически построить селектор? - PullRequest
1 голос
/ 30 ноября 2009

У меня небольшие трудности с передачей переменной в селектор в прототипе. Я хотел бы иметь возможность передавать переменную в строку выбора, чтобы одна функция могла работать для многих одинаковых типов.

На данный момент это то, что я в основном хотел бы сделать:

function myFunct(var)
{
  $(var + 'add_form').hide()  //so inde the brackets would be ('#product1 #add_form') for example.
}

Возможность передавать 'var' в функцию, которая передаст его селектору, чтобы я мог скрыть шаблон, который одинаков для многих на странице.

Буду очень признателен за любые идеи, по которым нужно следовать.

Ответы [ 3 ]

1 голос
/ 30 ноября 2009

Вы на правильном пути! Пара вещей:

  1. var - это ключевое слово JavaScript ( source ), не используйте его для именования переменной
  2. если вы запрашиваете элемент по id (например, #add_form), вам не нужно добавлять какой-либо элемент контейнера, как вы делаете
  3. Если вы запрашиваете элемент по class, вам нужно использовать функцию $$, а не $ функцию
  4. Вам нужно перебрать упакованный набор для вызова вашего метода
  5. пробелы значимы в селекторах css, поэтому обязательно включите их в конструкцию селектора, чтобы Prototype выполнял поиск в вашего родительского контейнера:

    function myFunct(parent) {
      $$(parent + ' .add_form').invoke('hide')
    }
    
    myFunct('#someparent'); // hides .add_form inside #someparent
    
0 голосов
/ 30 ноября 2009
function myFunct(yourVar)
{

  $$('#' + yourVar + ' .add_form').each(function(s){ s.hide(); });  // yourVar being the id of the container element

}

Я поставил «.» перед add_form, потому что вы не можете использовать несколько элементов с одинаковым ID, сделайте его классом.

0 голосов
/ 30 ноября 2009

Это должно сработать ... просто переименуйте var во что-то другое.

...