私はフォームビルダーを作っています、例えば見出しdivの外観を変えたいです。クリックすると境界線が表示されますが、動的に生成された別のdivをクリックするとクラスが削除され、2番目にクリックされたdivが.activeクラスを取得する必要があります。
生成されたdivでこれを行うにはどうすればよいですか?
とにかく動作するものを見つけましたが、まだ別のdivが選択されている場合、以前のdiv.removeclassと選択されたdiv.addclassが必要です
これは動作します:
/* Add Class */
$(document).ready(function() {
$( document ).on( 'click', '.HeadingDiv', function () { /* This '.HeadingDiv' could be anything, I need something dynamic here */
$('.HeadingDiv').removeClass('active'); /* This '.HeadingDiv' could be anything, I need something dynamic here */
$(this).addClass('active');
});
});
この短くて効果的なものを探していますか?
$('div').on('click',function(){
$('div').removeClass('active');
$(this).addClass('active');
});
選択したdivに一般クラス「アクティブ」を追加するだけです。 divがクリックされたら、「アクティブ」クラスを削除し、クリックされたdivに追加します。
セレクターがすべてです。コードを次のように変更できます。
<div class="formbuilder">
<div class="active">Heading</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
次に、このjavascriptを使用します。
$(document).ready(function () {
$('.formbuilder div').on('click', function () {
$('.formbuilder div').removeClass('active');
$(this).addClass('active');
});
});
動作中の例 jsfiddle
私が使用したセレクターについては、このAPIを参照してください。 http://api.jquery.com/descendant-selector/
1行を使用して、divのクラスを追加および削除できます。最初にクラスを削除して、新しいクラスを追加してください。
$('div').on('click',function(){
$('div').removeClass('active').addClass('active');
});
このモードでは、クラスがアクティブなすべての要素を検索して削除できます
これを試して
$(document).ready(function() {
$(this.attr('id')).click(function () {
$(document).find('.active').removeClass('active');
var DivId = $(this).attr('id');
alert(DivId);
$(this).addClass('active');
});
});
Divをリスト項目に変換する必要がありました。そうしないと、すべてのdivがそのクラスを取得し、生成されたものだけがそれを取得するはずです。 http://low-budgetwebservice.be/project/webbuilder.html で初心者向けスクールプロジェクトをフォローできます。提案はいつでも歓迎します:)。だからこれは私のために働いた:
/* Add Class Heading*/
$(document).ready(function() {
$( document ).on( 'click', 'ul#items li', function () {
$('ul#items li').removeClass('active');
$(this).addClass('active');
});
});