2017-10-13 15 views
0

divのidと一致するクラスを持つリストビューの項目に、特定のdiv(例:id = packtoa)をクリックするスクリプト(.addclass( 'show'))クリックしたdiv idをスクリプトに挿入する

これはうまくいきますが、次のdiv(id = packfhag)に同じことを行い、次のdivを実行します。だから私は同じ名前の&クラス名が変更されただけで、私のjsで何度も同じスクリプトを取得しています。

「pack」で始まるIDを持つdivがこのスクリプトをトリガーし、div idをプルしてクラスに名前を挿入するように、これを自動化するための愚かな明白な方法があると確信していますが呼び出されます。

そして私は、私はこのスクリプトを適応しようとしているとの緊密なんだと確信している:

$("div[id^=pack]").each(function() { 
    var match = this.id.match(/\w+$/)[0]; 
    $(this).addClass('show'); 
}); 

しかし、私はちょうどそれをクラックすることはできません。上記のいずれかが間違っているか、スクリプトの間違った場所に挿入しています:

// Tears of Ameratsu menu functions 
    $(document).bind('pageinit', function() { 
// When link is clicked 
    $('#packtoa').click(function() { 
// collapse the expansions menu 
    $("#expansionsmenu").click(); 
// hide everything except this expansion 
    $(".hidden").removeClass('show'); 
    $(".packtoa").addClass('show'); 
// clear the search, and trigger a blank search 
    $('input[data-type="search"]').val(''); 
    $('input[data-type="search"]').trigger("keyup"); 
    }); 
}); 

何が欠けていますか?

+0

理由はありませんクラスでクリックアクションを作成するIDではなく、新しい作成されたdivはすべて同じクラスを持ちますか? – user101289

答えて

0
// for selecting div which starts with pack 
// not recommended 
$("div[id^='pack']"); 

最良のオプションは、class属性を使用するすべてのものをdivにクラス属性を追加することで、例えば、その後

$('.commonClass').addClass('show'); 

// this is for testing 
 
// say you click 
 
$('#test').on('click',function(){ 
 
    $('.testclass').addClass('show'); 
 
});
.testclass{ 
 
display:none; 
 
} 
 
.show { 
 
    display:block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="testclass">div1</div> 
 
<div class="testclass">div2</div> 
 
<div class="testclass">div3</div> 
 

 
<input type='button' value='Click me to view div' id='test' />

+0

私は答えで少し混乱しています。あなたのコードは私のものと同じように見えますが、id:testをクリックすると、class:testclassに影響します。しかし、別のID /クラスのセットで同じことをする必要があるときは、同じスクリプトをtest1/testclass1とタイプし、test3などでもう一度入力する必要はありません。 –

+0

複数のクラスに対して'$( '.class1、.class2、.class3')' –

+0

$( 'class1'、.class2など)にaddclass( 'show')を実行すると、 #testはそれらのすべてに 'show'を追加します。私は#test1を.test1にaddclassする必要があり、#test2は.test2などにaddclassする必要があります –

関連する問題