2013-07-03 28 views
10

ドロップダウンで選択した値に基づいて値を取得するajax関数があります。私は部分文字列に基づいていくつかのフィールドを有効/無効にしようとしています。私はFirefoxで動作するように「含む」見つけましたが、ChromeとSafariでテストするオブジェクトがjQuery:contains()はFirefoxでは動作しますが、Chrome/Safariでは動作しません

if ($d.attr("embed").contains('$var_2$')) { 
    //do something 
} else { 
    // do something else 
} 

は、それはすべてのブラウザで動作します含まれているために、代替があります「はメソッドが含まれていない」と言われますか?

答えて

18

String.contains、ないjQuery.containsあります。これは、.attrの戻り値の関数を使用しているためです。これは、jQuery-ObjectではなくStringです。

$d.contains('$var_2$') 

をしかし、これが唯一の指定された属性ではなく、全体の要素に検索されませんのでご注意:

jQuery.contains()は(ウィッヒは、クロスブラウザで動作します)、あなたの代わりにこれを行うことができます使用します。

ので、あなたが最も可能性が高いやりたいこと(ウィッヒもクロスブラウザで動作します)String.indexOf()を使用している:働いた完全な説明のための

$d.attr("embed").indexOf('$var_2$') != -1 
+0

感謝を!代わりにindexOfを提案して試してみましたが、望みの結果が得られなかったのでシンタックスがオフになっているに違いありません。あなたの与えられた構文と完全に一致します。再度、感謝します。 – richj

+0

ようこそ。 – oezi

+0

この回答への更新点:Mozilla devsは、Firefox 6でES 6と互換性の理由からそのメソッドの名前を 'includes'に変更することにしました。 – beendr

3

indexOfを使用すると、すべてのブラウザで機能するはずです。あなたが使用しているもの

if ($d.attr("embed").indexOf('$var_2$') > -1) { 
    //do something 
} else { 
    // do something else 
} 
関連する問題