【问题标题】:Get reference to an element which has exactly a certain value获取对具有特定值的元素的引用
【发布时间】:2013-01-07 15:16:12
【问题描述】:

我想通过 jquery css 选择器获取对具有特定文本值的元素的引用。

例子:

<table >
 <tbody>
  <tr>
   <td>
    <i>MYVAL</i>  <!-- I want the reference to this element-->
   </td>
  </tr>
 </tbody>
</table>

但我不能仅仅写就成功

$('table tbody tr td i[value="MYVAL"]').SomeFunction();

正确的语法是什么?

【问题讨论】:

  • 如果你问的是一个 jQuery 问题,请不要用 CSS 给它加上标题。
  • 文本“MYVAL”的术语不是value,而是content。术语“值”用于实际具有“值”属性的&lt;input&gt; 元素(等)。
  • 但这也是关于 css 选择器的...
  • @DanieleB 这主要是一个 jQuery 问题,无论如何您通常不应该在问题标题中包含标签。问题已经标签来指定问题所涉及的内容。
  • 您不能使用 CSS 选择器或 jQuery 选择器(甚至 :contains())通过其确切的文本内容来选择元素。您将不得不手动检查其文本。

标签: javascript jquery


【解决方案1】:

注意那不是使用纯 CSS 选择器!

使用 .filter():

http://jsfiddle.net/p6fKe/

$('table tbody tr td i').filter(function(){return $(this).text() == "MYVAL"}).SomeFunction();

【讨论】:

  • 什么不使用纯 CSS 选择器?
【解决方案2】:

使用此代码

$('table tr td i:contains("MYVAL")').SomeFunction()

演示: http://jsfiddle.net/enve/6wjDj/

【讨论】:

  • 这将匹配任何在其内容中包含MYVAL&lt;i&gt; 元素,即使其内容与MYVAL完全相等。我不确定这会满足问题的要求。
【解决方案3】:
function selectTextElement(text) {
    var elements = [];
    $('table tbody tr td i').each(function() {
        if (jQuery(this).text() == text) {
            elements.push(jQuery(this));
        }
    });
    return elements;
}

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2019-05-11
    • 2012-01-16
    • 2016-07-22
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多