0

アニメーション化されたナビゲーションを使用するプロジェクトに取り組んでいます。(バックグラウンドで動作するJoomla)

複数のクラスがある場合にのみ取得するにはどうすればよいですかclass="item-##"(以下を参照)。

私のjQuery

$(document).ready(function(){
    var timer;
    var hover;

    $('#nav li').hover(
        function() {
/*Here!>>*/ var id = $(this).attr('class').split('-')[1];
            $('.moduletable-subNav ul').slideUp();
            $('#submenu-'+id).slideDown();
        },
        function(){
            var id = $(this).attr('id').split('-')[1];
            timer = setTimeout(function() { $('#submenu-'+id).slideUp(); },1000);
        }
    );

    $('.moduletable-subNav ul').hover(
        function(){
            clearTimeout(timer);
        },
        function(){
            var id = $(this).attr('id');
            timer = setTimeout(function() { $('#'+id).slideUp(); },1000);
        }
    );
});

私のHTML:

    <div class="moduletable">
    <ul class="menu" id="nav">
            <li class="item-109 current active parent"><a href="/tenc2012/burgerlijkrecht" >Burgerlijkrecht</a></li>
            <li class="item-110 parent"><a href="/tenc2012/strafrecht" >Strafrecht</a></li>
            <li class="item-108"><a href="/tenc2012/bestuursrecht" >Bestuursrecht</a></li>
    </ul>
    </div>
    <div class="moduletable-subNav">
            <ul class="menu" id="submenu-109">
                    <li class="item-114"><a href="/tenc2012/burgerlijkrecht/burgelijk-recht-deel-1" >Burgelijk recht deel 1</a></li>
            </ul>
            <ul class="menu" id="submenu-110">
                    <li class="item-117"><a href="/tenc2012/strafrecht/strafvordering" >Strafvordering</a></li>
            </ul>
    </div>
4

5 に答える 5

2

私が時々これに使用するテクニックの 1 つは、少しごまかし、「rel」または他の未使用の属性を使用してこのようなものを渡すことです。設定してみてください:

<li ... rel="109">

そして取得:

$(this).attr('rel')

ちょっとしたハックですが、やることはかなり簡単です。

編集

karim79 の「データ番号」の提案を使用した例:

<li ... data-number="109">

そしてjQuery:

$(this).attr('data-number')
于 2012-05-21T09:30:22.797 に答える
1

これは私が思いついたものです:

var classes = $('li[class^="item-]"').prop('class').split('\s');
var theClass;
$.each(classes, function(){
    if (this.match(/^item-/))
        theClass = this;            
});
于 2012-05-21T09:32:02.170 に答える
0
$(function(){
    $('li').each(function(){
        console.info($(this).attr('class').split(' ')[0]);
    });
});
于 2012-05-21T09:39:04.280 に答える
0

私があなたをフォローしているかどうかはわかりませんが、フォローしますか?

$('#nav li[class="item-109"]')

番号が必要な場合は、

$(this).attr('class').replace(/[^\d]/g, "");

または、もう少し安全に

$(this).attr('class').replace(/^.*(item\-\d+)$/, "$1");
于 2012-05-21T09:31:03.183 に答える
0

これを試して:

var classes = $('#my_element').attr('class').split(" ");

var item_class = $(classes).filter(function(a,i) {
  return i.match(/item\-[0-9]+/);
});

console.log(item_class);
于 2012-05-21T09:35:17.793 に答える