0

キーワードのリストに基づいてコンテンツを除外するスクリプトを作成する必要があります (コンテンツにこれらのキーワードのいずれかが含まれている場合は、それにスタイルを適用したいと考えています)。

これまでのところ、私はこのコードを持っています:

jQuery.expr[':'].mcontains = function(obj, index, meta, stack){
    result = false;     
    theList = meta[3].split("','");

    var contents = (obj.textContent || obj.innerText || jQuery(obj).text() || '')

    for (x=0;x<theList.length;x++) {
        if (contents.toLowerCase().indexOf(theList[x].toLowerCase()) >= 0) {
            return true;
        }
    }

    return false;
};

$("div:mcontains('facer','non')").css("background","red")

私はこれを自分で書いたのではなく、オンラインで見つけましたが、フィドルで必要な方法で正常に動作しました: http://jsfiddle.net/jtmVf/1/

ただし、プロジェクトに移植しようとすると、firebug で次のエラーが発生します。

TypeError: meta is undefined

この行で:

theList = meta[3].split("','");

なぜ未定義なのかわかりませんが、フィドルでエラーをスローしていませんか? 競合はありません (jquery.min を除く他のすべての js を削除して、それが問題であるかどうかを確認しました)。

ここの誰かが私が見逃しているものを見てくれることを願っていましたが、このスクリプトの何が問題なのですか?

4

1 に答える 1

0

「メタ」配列の内容を割り当てる場所にコードを投稿します。これらのタイプのエラーは通常、配列にそのようなインデックスがない場合に表示されるためです

于 2012-10-25T16:48:59.507 に答える