5

有没有办法让我以编程方式确定两个 jQuery 选择器是否选择了相同的确切元素?我正在尝试遍历一组 div 并跳过其中一个。我想要的是这样的:

var $rows, $row, $row_to_skip;
$rows = $('.row-class')
$row_to_skip = $('#skipped_row')

$.each($rows, function (id, row) {
        $row = $(row);
        if (!$row == $row_to_skip) {
            // Do some stuff here.
        };
    });
4

3 回答 3

8

您可以将 jQuery 对象传递到.not()

$rows.not($row_to_skip).each(function() {
    ...
});
于 2013-06-20T21:45:04.013 回答
4

您可以使用.is()

if (!$row.is($row_to_skip)) {
            // Do some stuff here.
   };
于 2013-06-20T21:43:14.490 回答
3

您可以比较 jQuery 选择的实际 DOM 元素:

var row_to_skip = $row_to_skip.get(0);
$.each($rows, function (id, row) {
    if (row !== row_to_skip) {
        // Do some stuff here.
    }
});

两个 jQuery 对象总是彼此不同,即使它们选择相同的元素(就像两个空对象不同)。

但是,在您的情况下,与其在循环内进行比较,不如从集合中删除元素更干净:

$('.row-class').not("#skipped_row").each(function() {
    // do stuff 
});
于 2013-06-20T21:40:34.513 回答