【发布时间】:2012-10-21 19:52:37
【问题描述】:
例如我有简单的 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 class div 时,我需要更改,例如,第一个childINeedToSelect class div 的边框ONLY。它们具有相同的父级 - a 类 div,但困难在于具有类 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");
}
如您所见,我正在尝试将 $(this) 作为参数发送到 detectElement() 以确定单击了哪个 div。但是我的目标div 背景没有改变,当我稍后尝试使用元素belt 时,在detectElement() 函数检测到 之后,Opera javascript 调试器给了我错误
Unhandled Error: Cannot convert 'belt.css('marginLeft')' to object
排队
var currentMargin = parseInt(belt.css('marginLeft').toString().replace('px', ''));
但是在调用detectElement() 函数之前,这行代码运行良好;我究竟做错了什么?我应该如何选择我需要的元素?
【问题讨论】:
-
belt = arrow.parent('.a').children('childINeedToSelect').eq(1);不是一个有效的选择器,那里只有一个对象,所以它是 .eq(0),但你甚至不需要具有这种选择器模式的 EQ....
-
children('childINeedToSelect')也缺少点前缀来表示类
标签: javascript jquery selector