【问题标题】:Prototype: how to dynamically construct selector?原型:如何动态构造选择器?
【发布时间】:2010-12-21 12:09:32
【问题描述】:

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

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

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

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

我们将不胜感激任何关于路径的想法。

【问题讨论】:

    标签: prototypejs css-selectors


    【解决方案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
      

    【讨论】:

      【解决方案2】:

      应该可以...只需将 var 重命名为其他名称即可。

      【讨论】:

        【解决方案3】:
        function myFunct(yourVar)
        {
        
          $$('#' + yourVar + ' .add_form').each(function(s){ s.hide(); });  // yourVar being the id of the container element
        
        }
        

        我放了一个“。”在 add_form 前面,因为你不能使用多个具有相同 ID 的元素,所以把它变成一个类。

        【讨论】:

          猜你喜欢
          • 2019-07-20
          • 2020-06-14
          • 1970-01-01
          • 1970-01-01
          • 2013-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多