私はブートストラップのレイアウトを持っています:コンテナ、行、いくつかの "block-divs"、すべてのblock-divの3つのdiv。 block-divの数は、スクリプトによって動的に作成されます(ユーザーはページに表示されるブロックの数を選択します)が、すべてのブロックに3つのdivが含まれます。ブロックごとに1つのアクティブなクラスを設定するにはどうすればよいですか? [Javascript]
ユーザーがdivをクリックすると、アクティブなクラスが追加されます。 私の問題は、私のコードはページ全体でアクティブなクラスを1つだけ設定することですが、すべてのブロックに対して1つのアクティブなクラスを設定したいと思います。
JSフレームワーク(純粋なJavaScriptのみ)を使用せずにどのように達成できますか? https://jsfiddle.net/9vr92ss4/
var myCol = document.getElementsByClassName('myCol');
function getTarget(e) {
if (!e) {
e = window.event;
}
return e.target || e.srcElement;
}
function setActive(e) {
var target = getTarget(e);
for (i = 0; i < myCol.length; i++) {
\t myCol[i].className = 'col-xs-4 myCol';
}
target.className = 'col-xs-4 myCol active';
}
for (j = 0; j < myCol.length; j++) {
myCol[j].addEventListener('click', function(e) {
setActive(e);
}, false);
}
/* Latest compiled and minified CSS included as External Resource*/
@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet');
body {
margin: 10px;
}
.myCol {
padding: 40px 0;
border: 1px solid #F44336;
cursor: pointer;
margin: 30px 0;
}
.active {
background: #9C27B0;
border: 1px solid #9C27B0;
color:#fff;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container text-center">
<div class="row">
<div class="col-xs-12 block">
<div class="col-xs-4 myCol">a-1</div>
<div class="col-xs-4 myCol">b-1</div>
<div class="col-xs-4 myCol">c-1</div>
</div>
<div class="col-xs-12 block">
<div class="col-xs-4 myCol">a-2</div>
<div class="col-xs-4 myCol">b-2</div>
<div class="col-xs-4 myCol">c-2</div>
</div>
<div class="col-xs-12 block">
<div class="col-xs-4 myCol">a-3</div>
<div class="col-xs-4 myCol">b-3</div>
<div class="col-xs-4 myCol">c-3</div>
</div>
</div>
</div>
アクティブなクラスを1つのクリックで多くのブロックに設定したいのですか、クリックごとにそのクラスを設定でき、削除されないようにしたいですか? –
jQueryはBootstrapのハード依存関係です。 jQueryを使用できますか? –
@DeividasKaržinauskas最初のブロックにアクティブなクラス、2番目のブロックにアクティブなクラスを持つdivなどのdivを設定します。ブロックごとにアクティブなクラスを持つdivは1つだけです。ブロックにすでにアクティブなクラスのdivがあり、別のdivをクリックした場合、クリックされた新しいdivはアクティブなクラスを持ち、古いクラスはそれを失います。 – Lewis