我有很多div
个,比方说.class
类。我需要根据特定路线为它们分配宽度
$(".class").width($(this).parent().next().find("code").width())
但是,出于某种原因,它不适用于$(this)
,但是当我这样做时它会起作用:
$(".class").width($(".class").parent().next().find("code").width())
但显然只适用于第一个。任何线索?
答案 0 :(得分:7)
jQuery width()方法接受一个函数:
返回设置宽度的函数。收到指数的位置 集合中的元素和作为参数的旧宽度。内 function,this指的是集合中的当前元素。
$(".class").width(function () {
return $(this).parent().next().find("code").width()
});
答案 1 :(得分:1)
由于类要用于多个元素,因此jQuery选择器可能返回一组元素而不是单个元素。对一组匹配元素的其他jQuery操作(例如.width()
)仅在第一个匹配时执行。因此,您需要迭代匹配的元素集,以便为每个匹配完成函数。
$('.class').each(function (idx, elem) {
// Returns the width
// Not sure what the intention is here. Assign to variable maybe?
return $(elem).parent().next().find('code').width();
});
答案 2 :(得分:0)
您调用这些函数的方式,this
没有理由指向每个单独的.class
元素。您处于全局环境中(无论如何),但不在.class
DOMElement的上下文中。
您可以改为使用each
方法:
$(".class").each(function() {
$(this).width($(this).parent().next().find("code").width());
});
提供函数作为setter的或width
方法:
$(".class").width(function() {
return $(this).parent().next().find("code").width();
});
两个方法都将循环遍历集合$('.class')
中的每个元素,并在每个元素的上下文中调用回调函数。