0

cssが次のように記述されているjQueryを使用して、左のプロパティを取得しようとしています

#sldn_mnu li:hover ul ul {left:-6000;}

以下は、左の小道具である (-7000) を出力する私のアラートです。このスタイル: #sldn_mnu ul ul {left:-7000;}。何か案は?ありがとう。

alert($('#sldn_mnu li').hover().find('ul ul').css('left'));

関連する html: セカンダリ < ul> アイテム 1.1.1 ドロップダウンと話をしようとしています。

<div id="sldn_mnu">
    <ul>
    <li><a href="#">HELLO</a></li>
    <li class="sldn_mnu-drop"><a href="#" ><span class="sldn_mnu-label">WORK</span></a>
        <ul>
          <li class="sldn_mnu-subDrop"><a href="#">Item 1.1</a>
            <ul>
              <li><a href="#" >Item 1.1.1</a></li>
              <li><a href="#" >Item 1.1.2</a></li>
            </ul>
          </li>
          <li><a href="#" >Item 1.2</a></li>
          <li><a href="#" >Item 1.3</a></li>
        </ul>
      </li>
      <li><a href="#" >Item 2</a>
        <ul>
          <li><a href="#" >Item 2.1</a></li>
          <li><a href="#" >Item 2.2</a></li>
          <li><a href="#" >Item 2.3</a></li>
        </ul>
      </li>
      <li><a href="#">Item 3</a></li>
    </ul>

4

2 に答える 2

0

あなたができることは、「ホバー」イベントをオーバーライドして、そこであなたのことをすることです。

JS:

$('#sldn_mnu li').bind('hover',function(e){
  //console.log($(this).find('ul ul').css('left'));
  alert($(this).find('ul ul').css('left'));
});​

<ul>ただし、に問い合わせるcss クラスを に追加する方が簡単で、次のleftように書くことができます。

console.log($(this).find('ul.<your_ul_css_class>').css('left'));

<li>別の単純化は、計算をトリガーしたいcss クラスを追加することです。これはすべて次のようになります。

$('li.<your_li_css_class>').bind('hover',function(e){
  console.log($(this).find('ul.<your_ul_css_class>').css('left'));
});​
于 2012-11-01T11:11:43.793 に答える
0

CSS がスタイルシートから取得された場合 (インラインで追加できないため、疑似クラスは常にそうです)、純粋な jQuery を使用してそれを取得することはできません。

代わりに、 の styleSheets オブジェクトを調べる必要がありますdocument.styleSheets

次のコードは、この回答から改作されています。すべてのスタイルシートを繰り返し処理し、一致する CSS ルールを探します。

動作デモはこちら。

function getStyle(selector) {
    for(var y=0;y<document.styleSheets.length;y++){
        var classes = document.styleSheets[y].rules || document.styleSheets[y].cssRules
        for(var x=0;x<classes.length;x++) {
            if(classes[x].selectorText.match(selector)) {
                    (classes[x].cssText) ? alert(classes[x].cssText) : alert(classes[x].style.cssText);
            }
        }
    }
}

getStyle(/sldn_mnu.*hover/);

単純な文字列比較ではなく、正規表現一致を使用するように関数を調整したことに注意してください。

アラートの代わりに、最初の一致の後に返すか、すべての一致の配列を返したい場合があります。

于 2012-11-01T13:07:19.423 に答える