【问题标题】:If text or value starts with a character, run function如果文本或值以字符开头,则运行函数
【发布时间】:2016-08-29 23:12:54
【问题描述】:

我需要检测跨度中的文本是否以字母“x”开头并运行一个函数。我读到我可以用字符串中的“^”来做到这一点 - 但在检查文本时遇到了麻烦......

 <span>xfoo</span>
if ($('span:contains(^"x")').length > 0) {
    alert ('there is text on this page starts with x');
}

我还可以检查输入字段的值...

【问题讨论】:

  • 对于初学者来说,您的跨度“以”空格开头...

标签: javascript jquery html contains startswith


【解决方案1】:

使用 regx 将有助于验证文本。

var s = document.getElementsByTagName('span');
var pattern = new RegExp('^[x]');

if(pattern.test(s[0].innerText)){
    console.log('found match');
} 
else {
    console.log('not found')
}

【讨论】:

    【解决方案2】:

    您必须遍历所有 &lt;span&gt; 元素,检查条件并运行代码。使用text() 获取元素的textContent,使用trim() 删除前导和尾随空格。

    $('span').each(function() {
        if ($(this).text().trim().startsWith('x')) {
            alert('Check this span, it starts with x');
    
            // Use `$(this)` here to refer to the current <span>
        }
    });
    

    如果 DOM 中有很多 &lt;span&gt; 元素,:contains() 可用于仅选择具有某些字符串(x) 的元素。

    $('span:contains("x")').each(function() {
        ...
    

    【讨论】:

    • 这很好用,谢谢!某些东西也可以检查值吗?页面上还有一个地方我想使用startsWith检查输入字段的值...
    • @user3390251 您可以将类似的代码用于$('input').val() 而不是text(),它应该可以工作。
    • 我会在这些跨度上添加一个类并按类选择它们,而不是遍历 eeeeevery 跨度。
    • @SilviuBurcea 是的,那会更快,但实际上取决于 OP 的要求。如果生成了标记怎么办?
    • @Tushar 即使生成了,也应该控制生成的内容:)
    【解决方案3】:

    首先,您需要trim() 文本以删除前导/尾随空格。从那里您可以使用filter()charAt(0) 来比较第一个字符。像这样的:

    var $spans = $('span').filter(function() {
        return $(this).text().trim().charAt(0) == 'x';
    });
    
    if ($spans.length) {
        console.log('Check these spans which start with x');
        $span.addClass('foo');
    }
    

    您可以使用 startsWith() 代替 charAt(),但请注意,在不使用 polyfill 的情况下,任何版本的 IE(甚至在 Chrome 41、FF 17 和 Opera 28 下)都不支持此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2021-09-16
      相关资源
      最近更新 更多