【问题标题】: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】:
你在正确的轨道上!几件事:
-
var 是 JavaScript 关键字 (source),不要用它来命名变量
- 如果您通过 id 查询元素(例如
#add_form),则无需添加任何容器元素
- 如果通过
class查询元素,则需要使用$$函数,而不是$函数
- 您需要遍历包装集以调用您的方法
-
空白在 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 的元素,所以把它变成一个类。