2016-05-04 12 views
0

スパン内のテキストが文字「x」で始まり、関数を実行する必要があるかどうかを検出する必要があります。私は「^」文字列内でそれを行うことができます読んで - しかし、苦労は私の テキストまたは値が文字で始まる場合、関数

<span>xfoo</span> 

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

ボーナスポイントは、入力フィールドの値を確認することができます...それはチェックのテキストを仕事作ります...

+2

あなたのスパンはスペースで始まります。 –

答えて

3

すべての<span>要素を繰り返し処理し、条件を確認してコードを実行してください。要素のtextContentを取得する場合はtext()を使用し、先頭と末尾のスペースを削除する場合は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()は、いくつかの文字列(X)を有する要素のみを選択するために使用することができます。

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

これは素晴らしいことですが、ありがとうございます!何かが価値をチェックするために働くだろうか?ページには、startsWithを使用して入力フィールドの値をチェックする別の場所があります。 – user3390251

+0

@ user3390251同様のコードを '$( 'input')'と '.val()'ではなく、 'text()'と動作するはずです。 – Tushar

+0

私はこれらのスパンにクラスを追加し、eeeeeveryスパンで反復するのではなくクラスによってそれらを選択します。 –

0

最初に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()を使用しますが、これはポリフィルを使用せずにIE(あるいはクロム41、FF 17とOpera 28の下)のいずれかのバージョンでサポートしていませんことを注意してください可能性があります。

0

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') 
} 
関連する問題