如何选择所有<pre> which contain only one line?</pre>

时间:2012-04-20 06:12:56

标签: jquery css

$('pre:contains("\n")')将选择包含至少一个换行符的所有<pre> 如何选择不包含换行符或最后只包含一个换行符的所有<pre>? 什么是快速的方式?

匹配

<pre>A</pre>

<pre>B
</pre>

不匹配

<pre>C

</pre>

<pre>

D</pre>

<pre>

E
</pre>

4 个答案:

答案 0 :(得分:2)

这个怎么样:

$('pre:not(:contains("\n"))')

答案 1 :(得分:2)

也许简单的方法就足够了,修剪文本然后检测换行符:

var myList = $('pre').filter(function(index) {
    var val = $(this).text().trim();
    return val.indexOf('\n') == -1;
});

$.each(myList, function() {
    alert($(this).text());
});​

示例数据:

<pre>hello</pre>

<pre>great
</pre>

<pre>you
say
</pre>

<pre>

yes</pre>

<pre>

heila
</pre>

<pre>not
included</pre>

<pre>included</pre>
​

输出:

 hello
 great
 yes
 heila
 included

实时测试:http://jsfiddle.net/Anb6q/1/

答案 2 :(得分:1)

var myList = $('pre').filter(function(index) {
    var val = $(this).text();
    return val.substring(0, val.length -2).indexOf('\n') === -1;
});

Fiddle here ...

已编辑Michael Buen评论

答案 3 :(得分:0)

这就是我得到的。

$('pre').filter(function(){
    var txt = $(this).text()
    return txt.substring(0, txt.length-1).indexOf('\n')==-1
}).css({'background-color':'#FFF4E8',
        'border-top':'1px solid #FF6600',
        'border-bottom':'1px solid #FF6600',
        'padding': '1px 0 1px 0',
})