たとえば、単純なhtmlがあります。
<body>
<div class="a">
<div class="child"></div> <!-- div element I click -->
<div class="childINeedToSelect"></div> <!-- div element I need to be selected -->
<div class="child"></div>
</div>
<div class="a">
<div class="child"></div>
<div class="childINeedToSelect"></div>
<div class="child"></div>
</div>
</body>
一番上のファーストchild
クラスの div をクリックすると、たとえば、ファーストクラスの div の境界のみchildINeedToSelect
を変更する必要があります。それらは同じ親a
クラス div を持ちますが、難しいのは、 class を持つ要素が複数あることですa
。私はすでに試しました:
$(document).ready(function () {
var child = $('.child');
child.bind('click', function() {
detectElement($(this));
});
});
var belt;
function detectElement(arrow) {
belt = arrow.parent('.a').children('childINeedToSelect').eq(1);
belt.css("background-color", "red");
}
ご覧のとおり、どのdivがクリックされたかを判断するために$(this)
、パラメーターとして送信しようとしています。detectElement()
しかし、ターゲットのdiv
背景は変わらず、後で要素を使用しようとすると、関数によって検出されたbelt
後、Opera JavaScript デバッガーでエラーが発生しますdetectElement()
Unhandled Error: Cannot convert 'belt.css('marginLeft')' to object
列をなして
var currentMargin = parseInt(belt.css('marginLeft').toString().replace('px', ''));
しかし、関数を呼び出す前に、このコード行は完全にdetectElement()
機能しました。私は何を間違っていますか?必要な要素をどのように選択すればよいですか?