2013-07-03 98 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對象。

使用jQuery.contains()(至極工程跨瀏覽器),你可以這樣做,而不是:

$d.contains('$var_2$') 

但請注意,這不僅會在指定的屬性,而是整個元素搜索。

,所以你很可能希望使用String.indexOf()做什麼(也至極工程跨瀏覽器):

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

感謝詳盡的解釋,即工作!我已經看過indexOf作爲替代方案,並嘗試過,但是我的語法一定已經關閉了,因爲我沒有得到期望的結果。完全符合你給定的語法。再次感謝。 – richj

+0

不客氣。 – oezi

+0

只需更新此答案:Mozilla開發人員決定將該方法重命名爲Firefox 48中的「includes」,以便兼容ES6。 – beendr

3

您可以使用indexOf,它應該可以在所有瀏覽器中工作。

if ($d.attr("embed").indexOf('$var_2$') > -1) { 
    //do something 
} else { 
    // do something else 
} 
相關問題