将段落行包装到span-tags(使用jQuery)并使用条件类

时间:2013-03-02 01:46:28

标签: jquery text numbers conditional

我试图将段落的每一行包装成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)

2 个答案:

答案 0 :(得分:1)

你在if语句中滥用jQuery,你应该使用String对象的indexOf方法:

$(".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;
})

答案 1 :(得分:0)

以下代码创建了一个jQuery对象(也称为包装集):

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

它总是会创建一个包装集,即使包装集是空的,所以以下条件总是为真:

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

如果要检查包装集是否为空,可以使用:

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

但是如果<br>标签之间的内容只是文本,那么您甚至不应该使用包装集。您可以使用以下内容:

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

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