【问题标题】:Mootools 1.2 and Firefox $$ selecting too many elementsMootools 1.2 和 Firefox $$ 选择了太多元素
【发布时间】:2013-02-13 18:36:22
【问题描述】:

浏览器必须是 firefox

Mootools 版本必须为 1.2.x

  1. $$ 选择器返回太多元素仅在 Firefox 中

http://jsfiddle.net/e77Xp/4/

HTML

<div class="only_trucks diagramz" id="diatruck">
    <div class="lf">lf</div>
    <div class="rf">rf</div>
    <div class="la">la</div>
    <div class="ra">ra</div>
    <div class="lrfo">lrfo</div>
    <div class="rrfo">rrfo</div>
    <div class="lrfi">lrfi</div>
    <div class="rrfi">rrfi</div>
    <div class="lrro">lrro</div>
    <div class="rrro">rrro</div>
    <div class="lrri">lrri</div>
    <div class="rrri">rrri</div>
</div>

JS

selected = $$('.rf');
alert(selected.length);
console.log(selected);

这应该只返回 1 个结果,但返回多个结果。它似乎与其中包含“rf”的其他类相匹配。

除了更新到最新版本的 mootools 或更改类名之外,有没有人可以解决这个问题?

【问题讨论】:

  • 奇怪,即使是文字形式 $$('div[class=rf]') 也有这种行为
  • 好问题。该应用程序在 JS 中很重,我不希望因为一个简单的更新而破坏其他任何东西。
  • 我最终可能只是制作这些 id,因为它们并没有在其他地方使用。
  • 哇,这是一个棘手的错误!即使这样也行不通:$$('.rf').filter(function (item) { return item.hasClass('rf');});

标签: javascript mootools1.2


【解决方案1】:

这是一个错误,但可以修复(感谢this answer)。将此代码添加到您的 JavaScript。

String.prototype.contains = function(string, separator){
    return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : String(this).indexOf(string) > -1;
};

这是fixed demo

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多