CSS选择器:contains()不适用于换行符

Mat*_*oli 3 html css jquery jquery-selectors

<div>Some reallllly
realllyyy long text</div>
Run Code Online (Sandbox Code Playgroud)

Some reallllly realllyyy long text由于HTML删除了换行符,因此将呈现为。

但由于换行符,我找不到div使用:contains()CSS选择器的代码:

// Returns an empty array
$(':contains("Some reallllly realllyyy long text")');
Run Code Online (Sandbox Code Playgroud)

有没有办法选择div并忽略换行符?

注意:我不想在选择器中添加换行符,我希望能够在div不知道换行符的情况下进行选择(因为我使用的是用户可以看到的文本,而他看不到越线)

Bre*_*wal 5

您可以做的就是覆盖:contains选择器:

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

看到这个小提琴

使用这种解决方案,您无需更改代码中的任何内容,而只需添加这段代码。但这不是一个好习惯。
当然,您可以用其他方式命名此选择器。在这种情况下,您可以使用两种行为:

$.expr[":"].mycontains

查看其他提琴