5

私は次のようなulliリストを持っています

<ul class="dropdown-menu" id="dropdown">
   <li><a id='l1' href='javascript:void(0);'>batch1</a></li>
   <li><a id='l2' href='javascript:void(0);'>batch2</a></li>
   <li><a id='l3' href='javascript:void(0);'>batch3</a></li>
   <li><a id='l4' href='javascript:void(0);'>batch4</a></li>
   <li><a id='l5' href='javascript:void(0);'>batch5</a></li>
   <li><a id='l6' href='javascript:void(0);'>batch6</a></li>
</ul>

これで、すべてのliのテキスト値を取得できます。問題は、テキスト値をセレクターとして使用できないことです。やりたいことは、div(idは "batch1、batch2 ... batch6")、 liがクリックされた場合に非表示にしたい(クリックされたliを除く)。コードは=

html:

<div id="batch1"></div> 
<div id="batch2"></div> ......

jquery:

$(document).ready(function(e) {
    $('body').click(function(event) {

    if($(event.target).is('#l1')) {
       var id = "'#"+$('#l2').text()+"'";
       $(id).hide();
    }
});
});

私は何をすべきか。私は約24時間試していますが、まだ暗闇の中でです。よろしくお願いします

4

2 に答える 2

3

#batch1すべての要素に共通のクラスを追加して、#batch2それらすべてを一度にターゲットにできるようにする必要があります。

次に、IDを例外として使用します...

HTML

<div id="batch1" class="batch"></div>
<div id="batch2" class="batch"></div>

javascript

$('#dropdown').on('click','a', function(e){
    e.preventDefault();
    var id = '#' + $.trim( $(this).text() ); // create the id based on the text

    $('.batch').hide(); // hide all batch elements
    $(id).show(); // show the one that corresponds to the clicked li
});

http://jsfiddle.net/A5Vxm/でのデモ

于 2012-06-07T11:20:08.950 に答える
1
$('body').click(function(event) {
    if(event.target.id  == 'l1' ) {
       var id = "#" + $.trim( $('#l2').text() );
       $(id).hide();
    }
});​

デモ

ただし、divが動的である場合は、ページの読み込み後にDOMに追加されることを意味します。

    $('body').on('click', 'a', function(event) {
        event.preventDefault();
        if(event.target.id  == 'l1' ) {
           var id = "#" + $.trim( $('#l2').text() );
           $(id).hide();
        }
    });​
于 2012-06-07T11:00:48.770 に答える