如果文本或值以字符开头,运行 函数

If text or value starts with a character, run function

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

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

我的奖励积分还可以检查输入字段的值...

您必须遍历所有 <span> 元素,检查条件和 运行 代码。使用 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中有很多<span>个元素,:contains()可以用来select只有那些有一些字符串(x).

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

首先您需要 trim() 文本删除 leading/trailing 空格。从那里你可以使用 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(),但要注意这在任何版本的 IE 中都不支持(甚至在 Chrome 41、FF 17 和 Opera 28 下)不使用 polyfill。

使用正则表达式将有助于验证文本。

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')
}