Mootoolsは2番目のクラス名を取得します

私はjqueryで2番目のクラス名を取得する方法を見ていますが、mootoolsでどのように行うのですか?私の要素は

  • 私はli.parent.activeのような完全なクラス名と一致させる必要があり、そのクラスが存在する場合は高さを調整しようとした   $$( 'li')。hasClass( 'parent active')またはgetPropertyですが、すべてが .parent.active 私は得る

    The expression is not a legal expression. now I must support mootols 1.1 ,1.2 ,1.3 working on CMS here so I started with the ugly one 1.1 version

    これは実際に必要とされる方法です

    var holderdiv =$('mymenu');
    if($$('li.parent.active')){holderdiv.setStyle({'height':'50px'});
    
  • 3

    2 答え

    if($$('li.parent.active') == true) returns true as in, it's truthy (defined, not null).

    あなたが言っているのであれば:.parentと.activeを持つ少なくとも1つの子要素があります。

    if (holderdiv.getElement("li.parent.active"))//at least one.
        holderDiv.setStyle("height", 50);//setStyle uses a value pair, not an object.
    

    holderdivの子でない場合は、代わりに document.getElement または whateverElObj.getElement を実行してください。

    これは古いxpathのものが原因で1.11で破損する可能性があります。

    MooTools.versionがダブルループのパフォーマンスコストのために間違っている場合にのみこれを行うべきですが、すべてのバージョンで動作するようにするには1つの方法です。

    var holderdiv = $("holderdiv");
    
    if (holderdiv.getElements("li.parent").some(function(el){ return el.hasClass("active"); })) {
       //at least one.
        holderdiv.setStyle("height", 50);
    }
    

    条件( hasClass( "active"))に一致するものが見つかるまで .some をすべての li.parent ブール値true else、false。

    http://jsfiddle.net/dimitar/BqwAk/

    lisの参照をコレクションに保持する必要がある場合は、代わりに .filter を使用します。

    var lis = holderdiv.getElements("li.parent").filter(function(el){ 
        return el.hasClass("active"); 
    });
    

    すべてが.parentを持っていて、ただ1つしかアクティブでない場合、あなたは本当に気にしないので、ちょうど行うことができます

    if (holderdiv.getElement("li.active"))
    

    または

    if (holderdiv.getElement("li.active").hasClass("parent"))
    

    ...すべてが.parentを持っていないかどうかを再確認する。

    6
    追加された
    いつものように!!!ばっちり成功 !もう1つは1.1のために働く!ありがとう!
    追加された 著者 Benn,
    いくつかのJS魔法のためにあなたを雇うべきです。ここでは冗談ではありません。すばらしい指示
    追加された 著者 Benn,
    ハハ。 :)もし私が助けになることができるなら、Twitterでmsg me - @D_mitar :)
    追加された 著者 Dimitar Christoff,

    すべての要素を parent active の両方のクラスにマッチさせ、そのスタイルを設定するだけでMooToolsを簡単に使うことができます:

    $$('li.parent.active').setStyle({'height':'50px'});
    
    0
    追加された
    それをやってみましたが、私は1.1からあなたは完全な名前を得ることができると思います
    追加された 著者 Benn,
    これはどのように必要なのですか($$( 'li.parent.active')== true){holderdiv.setStyle({'height': '50px'});
    追加された 著者 Benn,
    はい、ちょうどテストされた、フルクラス名は1.2以上から動作しますが、1.1は動作しません
    追加された 著者 Benn,
    私の質問を読んでください。私は1.1からすべてのバージョンをサポートしなければならない
    追加された 著者 Benn,
    @ベン:それは意味をなさない。 $$(...)== true とは何ですか? $$ は、特定の操作を実行できる要素のリストを返します。あなたの
  • 要素は holderdiv の子要素になっていますか? (つまり、 $$( '#mymenu li.parent.active'))。 MooToolsのCSS拡張機能を含めてみてください。もっと良いのは、もっと新しいバージョンにアップグレードすることです(現在は1.4です)!
  • 追加された 著者 knittl,