$(“。class”)。width($(this)...)无效

时间:2014-12-01 19:04:32

标签: javascript jquery

我有很多div个,比方说.class类。我需要根据特定路线为它们分配宽度

$(".class").width($(this).parent().next().find("code").width())

但是,出于某种原因,它不适用于$(this),但是当我这样做时它会起作用:

$(".class").width($(".class").parent().next().find("code").width())

但显然只适用于第一个。任何线索?

3 个答案:

答案 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')中的每个元素,并在每个元素的上下文中调用回调函数。