选择器以获取元素

时间:2015-10-26 18:42:09

标签: javascript jquery

我需要为sharepoint webpart编写自定义JS。因此,我需要找到每个TableRow,其中包含一个包含PDF文件超链接的子项。

直到现在我使用了以下选择器:

$('tr:has("a[href$="pdf"]")')

主要问题是所述超链接的父级嵌套在多个表格中。

我无法更改此布局。

基本上是:

<tr>
  <tr>
    <tr>
      <a href=".pdf" />
    </tr>
  </tr>
</tr>

我只想找到超链接的直接父级。我该怎么做呢? 我不想用:

 $('a[href$="pdf"]').parent()

1 个答案:

答案 0 :(得分:2)

如果您知道嵌套级别始终为3,请使用:

$('tr tr tr:has(a[href$=pdf])')

否则,这将起作用:

$('tr:has(a[href$=pdf]):not(:has(tr))')

这是一个片段(为了简洁起见,我使用了<div>而不是<tr>):

&#13;
&#13;
var selected = $("div:has(a[href$=pdf]):not(:has(div))");
selected.addClass('selected');
&#13;
div {
    border: 2px solid gray;
    padding: 6px;
}

.selected {
    border-color: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div>
    <div>
        <div>
            <a href="http://example.com/foo.pdf">foo.pdf</a>
        </div>
    </div>
</div>
&#13;
&#13;
&#13;

......但坦率地说$('a[href$=pdf]').closest('tr')可能更有效率。