1

我想获取带有特定文本的标签的索引。因此,如果我有 10 个以 Click Me 作为文本的链接,如果我点击第二个链接,我想要 2 个。

JSfiddle

$(document).ready( function() {
  $('a').click(function () {
      if ($(this).text() != ""){
            var index = $("a").text().index(this);
            alert (index + 1);
      }
  });
});

示例 HTML 代码

<a href="#">Click Me</a><br /><Br />

<a href="#">Different</a><br /><Br />

<a href="#">Click Me</a><br /><Br />

<div>
<a href="#">Click Me</a><br /><Br />
    <div>
    <a href="#">Click Me</a><br /><Br />
    <a href="#">Different</a><br /><Br />
    </div>
</div>

<ul>
    <li><a href="#">Click Me</a></li>
    <li><a href="#">Click Me</a></li>
    <li><a href="#">Click Me</a></li>
    <li><a href="#">Click Me</a></li>
</ul>

<a href="#">Different</a><br /><Br />
4

4 回答 4

1

如果我理解正确,您想要的是以下内容:

如果用户单击文本值为“First”的链接,它将检查您网站上包含相同文本值的所有链接,并返回当前单击的链接在具有“First”文本的所有链接的整个集合中的索引价值。

如果是这种情况,您应该考虑使用 jQuery:contains()选择器。有关示例,请参见此 jsfiddle:http: //jsfiddle.net/PvwFZ/3/

获得平等(而不仅仅是包含):http: //jsfiddle.net/PvwFZ/10/

于 2012-07-23T13:18:18.767 回答
0

不确定你是否喜欢这样 - http://jsfiddle.net/4MvJU/

它将获取索引,然后警告它并将其添加到当前元素。

你不能这样做,因为 text() 正在返回元素的文本。

于 2012-07-23T13:14:27.787 回答
0

.text()返回节点的文本,因此不可链接。您应该单独获取索引,如下所示:

$('a').click(function () {
  var $this = $(this),
      text = $this.text();
  var index;

  if (text !== ""){
        index = $('a').index(this);
        alert (index + 1);
  }
});
于 2012-07-23T13:13:43.817 回答
0

通过使用 ":contains",您可以生成一个 jQuery 对象,该对象由包含特定文本值的所有元素组成。

$('a').click(function () {
  var text = $(this).text();
  alert($('a:contains(' + text + ')').index(this) + 1);
});​

演示

于 2012-07-23T13:43:13.613 回答