-3

jqueryは、ページ上のすべてのテキストを置き換えることなく、'<lineNo'呼び出されたdiv内に存在するオカレンスの数を検索、カウント、およびページに出力するにはどうすればよいですか?'dialogue'

<div id="dialogue">
<div id="1">
 <lineNo1>1</lineNo1>) 
 <lineNo2>2</lineNo2>) 
 <lineNo3>3</lineNo3>) 
</div>

<div id="2">
 <lineNo1>1</lineNo1>) 
 <lineNo2>2</lineNo2>) 
 <lineNo3>3</lineNo3>) 
</div>
</div>

ありがとうございました。

4

3 に答える 3

2

HTML

<div id="dialogue">
    <div id="1">
     <lineNo1>1</lineNo1>) 
     <lineNo2>2</lineNo2>) 
     <lineNo3>3</lineNo3>) 
    </div>

    <div id="2">
     <lineNo1>1</lineNo1>) 
     <lineNo2>2</lineNo2>) 
     <lineNo3>3</lineNo3>) 
    </div>

    <!-- display line no -->
    <div class="msg">You have <span class="count"></span> lines.</div>

</div>​ <!-- Missing this closing in question -->

jQuery

var count = 0;;
$('div[id^="dialogue"] div').each(function() {
    var pattern = new RegExp('<lineNo', 'ig'),
        match = $(this).html().match(pattern),
        len = match ? match.length : 0;
        count += len; 
});
$('.msg span.count').html(count);

デモ </p>

于 2012-12-15T17:54:53.127 に答える
1

div内のテキストを取得するには、jQueryセレクターを使用します。$('.dialogue').text()

次に、正規表現を使用して文字列のすべての出現を取得できます。someString.match(/lineNo/g)

于 2012-12-15T17:47:27.097 に答える
0

を使用しようとしているようですdocument.write

$("body").append("<div>" + $("#dialogue *").filter(function () {
   return this.nodeName.toUpperCase().indexOf('LINENO') > -1; 
}).length + "</div>");​

これは単に新しいdivを作成し、それを本体に追加します。その内容はあなたが望む数です。これは、未知のノードを異常な方法で処理するIE8-ではうまく機能しない可能性があることに注意してください。

于 2012-12-15T17:46:08.473 に答える