2014-04-24 84 views
0

所以jQuery「inArray」對我來說是一個新的野獸,所以我有點不確定這將如何工作。 https://api.jquery.com/jQuery.inArray/用inArray檢查內容添加類

我對此內容有一個div「0 CHECKOUT NOW」。

我想檢查何時0更改爲另一個數字,如果它發生變化,向包含的div添加一個「active」類。

我的HTML看起來像這樣:

<div class="search-again-panel-top"> 
    <a class="checkout-now" href="#"> 
    0 CHECKOUT NOW 
    </a> 
</div> 

這正是我試圖做的:

$('.search-again-panel-top .checkout-now').filter(function() { 
     var text = $(this).text('0'); 
     return $.inArray(text, this) = -1; 
    }).addClass('active'); 
+0

'inArray'與這個有什麼關係? –

+0

我更新了我的問題 – Aaron

+0

文字如何變化?檢查導致文本改變的代碼是否更容易? – Guffa

回答

1

你可以試試這個:

var checkElement = $('.search-again-panel-top .checkout-now') 
var parts = $(checkElement).html().split(" "); 
if (jQuery.inArray("0", parts) == -1) { 
//do nothing 
} else { 
//has changed 
$(checkElement).addClass("active"); 
} 

的jquery.inArray基本功能將搜索的項目作爲第一個參數傳遞,並將實際的數組作爲第二個參數進行檢查並進行檢查如果存在。如果在該數組中找到該項目,它將返回字符串中的字符位置。如果未找到,則返回-1

+0

試過這個,但沒有喜樂!我將如何使它特定於結賬現在錨? – Aaron

+0

檢查編輯。我用定義爲.checkout-now錨點的checkElement替換了$(this)。不需要包含你的filter()函數。只是這直接應該做的伎倆。 – Cyassin

+0

對不起,我也有if語句錯誤的方式。替換>與==在編輯中看到。 http://jsfiddle.net/wsLHg/鏈接的jsfiddle工作正常。 – Cyassin

0

您正在設置文本而不是獲取它,在獲取文本時使用參數。要檢查數組中的文本,您需要使用split來獲取數組,並且您應該查找'0'而不是this,並檢查結果是否不等於-1。

var text = $(this).text(); 
text = text.split (' '); 
return $.inArray('0', text) != -1; 
+0

謝謝,但這對我來說不成功... \t $('。search-again-panel-top .checkout-now')。filter(function(){ var text = $ (本)的.text(); \t \t文本= text.split(」 '); \t \t回$ .inArray(' 0' ,文本)= -1;! })addClass( '激活') ; – Aaron

+0

@Aaron:當我測試它時,它工作:http://jsfiddle.net/At6e8/ – Guffa