if
の文でIDの一致を確認しているが、A
要素と同じIDを持つB
要素を検出したい彼にクラスを与えなさい。このスクリプトで問題を見ることができます:if文の比較から値/解決策を得る
jQuery('.button').click(function() {
var a = jQuery('.a').attr('id')
var b = jQuery('.b').attr('id')
if (a === b) {
// "jQuery(this)" should be the detectet B-element, which has the same "id" as A
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
jQuery(this).addClass("active");
jQuery(this).css("background", "red");
// But it detects the button as "jQuery(this)"
} else {
return;
}
});
.a,
.b,
.c {
width: 100px;
height: 100px;
margin: 1em;
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="button">Button</a>
<div class="a" id="block">A</div>
<div class="b" id="block">B</div>
<div class="c" id="notblock">C</div>
感謝を助けるため!
IDはブロックのIDと同じである必要があります。 – guradio
ええ、クラス名はDOM IDではなく共通にすることができます。 –
あなたのロジック全体に欠陥があります。同一の 'id'属性を持つ2つの要素を持つべきではないからです。 –