0

段落の各行を span タグにラップしようとしています。これまでのところうまくいきます(私が見つけたコードのおかげです)。今、私は条件を持ち込もうとしています。私が望むのは、文字列 (特定の行) に特定のテキストまたはパターンが含まれているかどうかを確認することです。含まれている場合は、出力を操作したいと思います。

var txt = $(".ym-col1 p.address").html().split("<br>")
var output = ""
for(var x=0;x<txt.length;x++) {
    if($("txt[x]:contains(\"08\")")) {
        output = output + "<span class=\'telephone\'>"+txt[x]+"</span><br>"
    }
        if($("txt[x]:contains(\"@\")")) {
        output = output + "<span class=\'email\'>"+txt[x]+"</span><br>"
    }

}
$(".ym-col1 p.address").html(output);

if() でのみ出力を使用する場合は機能しますが、テキストの各行をダブルで取得する場合は機能します。私が間違っていることは何ですか?

そして別の質問です。:) 文字列に 5 桁以上が含まれているかどうかを確認するスマートな方法はありますか? (例: 123456)

4

2 に答える 2

1

ifステートメントでjQuery を誤用しています。StringindexOfオブジェクトのメソッドを使用する必要があります。

$(".ym-col1 p.address").html(function(i, html){ 
     var txt = html.split('<br>'), output;
     for(var x = 0; x < txt.length; x++) {
         if ( txt[x].indexOf("08") > -1 ) 
             output += "<span class='telephone'>"+txt[x]+"</span><br>"
         else 
             output += "<span class='email'>"+txt[x]+"</span><br>"
     }
     return output;
})
于 2013-03-02T02:01:59.353 に答える
0

次のコードは、jQuery オブジェクト (別名ラップ セット) を作成します。

$("txt[x]:contains(\"08\")")

ラップされたセットが空の場合でも、常にラップされたセットが作成されるため、次の条件は常に true になります。

if($("txt[x]:contains(\"08\")")) {

ラップされたセットが空でないかどうかを確認したい場合は、次を使用できます。

if($("txt[x]:contains(\"08\")").length > 0) {

しかし、<br>タグの間にあるのがテキストだけの場合は、ラップされたセットを使用するべきではありません。次のような行を使用できます。

if (txt[x].indexOf("08") >= 0) {

if (txt[x].indexOf("@") >= 0) {
于 2013-03-02T02:02:56.977 に答える