【问题标题】:Searching for Nodes with Specific Text using the Prototype Javascript Framework使用 Prototype Javascript 框架搜索具有特定文本的节点
【发布时间】:2011-03-01 11:38:24
【问题描述】:

Prototype Javascript 库是否有与 jQuery 的 :contains() 等效的选择器?如果不是,那么选择/过滤包含特定字符串的元素列表的“原型方式”是什么。

例如,使用以下

$$('#some_div dd a')

我可能会返回一个包含 50 个左右的链接的数组。我想要包含作品“家”的链接。在 jQuery 中我会这样做

jQuery("#some_div dd a:contains('home')");

是否可以使用 Prototype 做类似的事情?如果没有,是否有一种优雅的方法来过滤掉返回的 50 个元素的数组。

【问题讨论】:

    标签: javascript prototypejs css-selectors


    【解决方案1】:

    我能找到的最佳(非 Sizzle)答案是使用 findAll 方法过滤掉。

    $$(selector).findAll(function(e){ return e.innerHTML.indexOf(label) != -1;}) 
    

    【讨论】:

    • 感谢艾伦,第一次工作。非常适合在 adminhtml 网格中突出显示值。例如通过布局插入一个新的 skin_js,使用以下 document.observe("dom:loaded", function() { $$('.status').findAll(function(e){ if(e.innerHTML.indexOf('Received,待审核') != -1){ e.addClassName('urgent'); } }); });取决于使用 addColumn() 的 'column_css_class' => 'status' 参数;
    【解决方案2】:

    您是否阅读过有关 Sizzle 集成的文章。

    http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-more

    这应该对你有帮助。

    【讨论】:

    • +1 以获得有用的信息,这看起来很不错。但是,如果我可以控制我在这个项目中使用的原型版本,我会选择 jQuery ;)
    • 然后我建议您将 SizzleJS 作为库合并到应用程序中,而不是原型的一部分。 $$(Sizzle('#divid:contains(\'hello world\')')) 这样的东西是我得到的最好的:)
    • 简单(不排除类名或标签,但仍然可能有用)包含:$$('#some_div dd a').each(function(s) { if( s.innerHTML.indexOf('home') >= 0 ) { /* do something */ } });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多