web-dev-qa-db-ja.com

jQuery:文字列を含むクラスのみを選択しますか?

私は現在、これを使用して、ページ上の特定のHTMLのクラスを取得しています。

_$(this).parent("div").attr('class')
_

しかし、そのdivには複数のクラスがあります:_current_status status_billed_

ここでの最終目標は、_status__で始まるクラスを取得して、別のクラス名に置き換えることです。

上記の.parent()関数を使用すると、必要なdivを選択できますが、次に_status_billed_クラスを削除して、たとえば_status_completed_に置き換える必要があります(または他のいくつかのクラス名)。

20
Shpigford

_status_billed_クラスを持つdivsを選択します。

_$(this).parent('div.status_billed')
_

div属性に_status__が含まれるclasssを選択します。

_$(this).parent('div[class*=status_]')
_

jQueryセレクター で得られる最高のものです。 .filter() を使用すると、より良い結果が得られます。

_$(this).parent('div').filter(function ()
{
    var classes = $(this).attr('class').split(' ');
    for (var i=0; i<classes.length; i++)
    {
        if (classes[i].slice(0,7) === 'status_')
        {
            return true;
        }
    }
    return false;
});
_

...しかし、なぜこれをすべて行うのかはわかりません- .parent() は最大で1つの要素を返します。もしかして .closest() または .parents()

44
Matt Ball