3

看起来有问题(效率低下?):

$($('.feature-s').siblings()).children().children('a[data-target=#deleteModal]').parent().parent().click();

我想选择跨度:

/html/body/div/div/div/div[1][class="feature-s"]
/html/body/div/div/div/div[2]/span/a/i/span <= click

但不是在哪里:

/html/body/div/div/div/div[1][class="something else"]
/html/body/div/div/div/div[2]/span/a/i/span <= not handled

我在这里重现了这种情况:

http://jsfiddle.net/brianray/ncu6u/

如果我的选择器没问题,就这么说吧。我只是觉得必须有更好的方法来根据现有的 dom 选择该按钮。

谢谢!

4

3 回答 3

2

最简单和最快的(在所有其他答案中)是:

$('.feature-s + div a[data-target="#deleteModal"]')

请参阅jsperf

在此处输入图像描述

于 2013-10-02T13:01:03.613 回答
1

检查下面的jsFiddle。您可以使用 + 选择器直接选择 feature-s 之后的元素。

$('.feature-s + div').find('a[data-target="#deleteModal"]').click(function(){
    alert('hey');
    return false;
});

下面的示例工作得很好,效率更高。

http://jsfiddle.net/ncu6u/1/

于 2013-10-02T12:52:24.203 回答
0

我认为

$('.feature-s').siblings()

已经返回 jQuery 对象,因此您不必将其包装到 $() 中。

总而言之,看起来还不错。希望这可以帮助。

于 2013-10-02T12:48:57.530 回答