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