原型:如何动态构造选择器?

时间:2009-11-30 01:25:23

标签: prototypejs css-selectors

我在将一个变量传递给原型中的选择器时遇到了一些困难。我希望能够将一个变量传递给select字符串,这样一个函数就可以用于许多同类函数。

目前,这是我基本上想做的事情:

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

能够将'var'传递给将它传递给选择器的函数,这样我就可以隐藏页面上许多模式相同的模式。

非常感谢任何关于路径的想法。

3 个答案:

答案 0 :(得分:1)

你走在正确的轨道上!情侣:

  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
    

答案 1 :(得分:0)

这应该有用......只需将var重命名为其他内容。

答案 2 :(得分:0)

function myFunct(yourVar)
{

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

}

我放了'。'在add_form之前,因为你不能使用具有相同ID的多个元素,所以将它作为一个类。