3
<div>Some reallllly
realllyyy long text</div>

Some reallllly realllyyy long textHTML は改行を削除するため、次のようにレンダリングされます。

しかし、改行のために CSS セレクターのdiv使用が見つかりません。:contains()

// Returns an empty array
$(':contains("Some reallllly realllyyy long text")');

div を選択して改行を無視する方法はありますか?

:セレクターに改行を追加したくありません。改行があることdivを知らずに選択できるようにしたいです(ユーザーが見ることができるテキストを使用しているため、ユーザーは改行)

4

2 に答える 2

5

あなたができることは、:containsセレクターをオーバーライドすることです:

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().replace(/(\n)+/g, " ").indexOf(arg) >= 0;
    };
});

このフィドルを参照してください

このようなソリューションでは、コードを変更する必要はなく、このコードを追加するだけです。しかし、これは良い習慣ではありません。
もちろん、このセレクターに別の名前を付けることもできます。この場合、両方の動作を使用できます。

$.expr[":"].mycontains

この他のフィドルを見る

于 2013-07-11T09:39:39.523 に答える
0

概念は非常に非効率的であり、私の答えもそうです:

$("div").each(function () {
    if ($(this).text()replace(/(\n)+/g, " ") == "Some reallllly realllyyy long text") {
        // Do something
        $(this).css({color: 'red'});
    }
});

ブラウザーはたまたま、空白文字のコレクションを単一のスペースとしてレンダリングすることに注意してください。アプローチを再考してください。

于 2013-07-11T09:32:35.280 に答える