将类似元素视为单独的对象

时间:2014-01-06 23:00:23

标签: javascript jquery

我有一堆类似的对象,我想找到一些CSS属性。我无权访问任何类或ID,因为用户可以自定义这些类。或者

$("div").each(function() {
    $(this).width("foo");
});

然后我想将每个元素视为一个单独的对象并执行诸如找到宽度最小的div,然后更改该div的背景颜色。

1 个答案:

答案 0 :(得分:1)

如果你想找到最小的div,你可以对div进行排序并选择第一个

function ascending(a, b) {
    return $(a).width() - $(b).width();
}

var sorted = $('div').sort(ascending);
$(sorted[0]).css('border', '5px solid red');

请参阅JSFiddle

更新

查看Array.prototype.sort(),重要的部分是如何定义比较功能(例如,升序)。它返回

  • < 0,当a小于b
  • 0,当a等于b
  • > 0,当a大于b

作为替代方案,您可以循环遍历div并比较元素的宽度

var x = $('div')[0];
$('div').each(function(i, el) {
    if ($(this).width() < $(x).width())
        x = el;
});

$(x).css('border', '5px solid red');

通过这种方式,您可以与<>或您喜欢的任何其他方式进行比较。作为副作用,此版本比排序div更有效。

查看更新的JSFiddle