1

我有一个 UL 清单:

<ul>
  <li data-sel='foo'></li>
  <li></li>
  <li data-sel='foo'></li>
  <li class='selected'></li>
  <li data-sel='foo'></li>
 </ul>

我可以使用选择器访问li.selected没有属性的前一个元素data-sel=foo:not

var element = $('.selected').prev("li:not([data-sel='foo'])");

但是我怎样才能访问li.selectedwho has attribute的第一个先前元素data-sel=foo

4

4 回答 4

1

这应该可以正常工作:

var element = $('.selected').prev("li[data-sel='foo']");

演示

于 2012-09-06T15:28:08.220 回答
0

你试过:has选择器吗?http://api.jquery.com/has-selector/

于 2012-09-06T15:28:06.117 回答
0

这就是prev()工作原理,您可以prevAll()像这样使用:

jsFiddle

$('.selected').prevAll('li').not('[data-sel="foo"]').first();

或者

$('.selected').prevAll('li:not([data-sel="foo"]):first');
于 2012-09-06T15:32:15.430 回答
0

这有效:

var element = $('.selected').prevAll("li[data-sel='foo']")[0];

jsFiddle 示例

于 2012-09-06T15:37:49.650 回答