2014-03-12 85 views
1

我正在構建一個角度應用程序,其中按鈕應該在div中附加一個塊引用,但只有在blockquote不在HTML中時纔可能。檢查div是否已經包含特定項目

所以我想尋找與下面的代碼的HTML字符串<blockquote id='myBlockquote'>,但它不工作:

if ((myHTML.indexOf('<blockquote id="myBlockquote">') = -1)) { 
    myHTML.append('some HTML'); 
} 

我在做什麼錯?

乾杯

+2

我寧願overthink您的解決方案,也許一個數組中保存的ID的範圍和然後看看,如果你已經有了id或類似的東西,性能比解析某些id或元素的dom好得多 – Johnny000

回答

0

我相信myHTML是字符串而不是DOM對象。您可以將字符串轉換在爲HTML,然後找到元素的存在:

var elements = $(myHTML); 
if(!$('#myBlockquote', elements).length){ 
    //element does not exists. 
} 
1

嘗試,如果你想要的元素存在,檢查長度或不使用.length然後追加

if(myHTML.find('#myBlockquote').length > 0) { 
    myHTML.append('some HTML'); 
} 
+0

我得到一個錯誤,說我的html沒有方法.find 我已經使用typeof來檢查我的html的類型它是一個字符串 – Spearfisher

+0

你正在使用一個字符串來尋找我認爲!但我建議你採取對象而不是字符串! –

1

我會建議不要從控制器操縱DOM。這是這個觀點的責任。

你應該包含像範圍內引用文字的數組:

$scope.blockquotes = [{id: 1, text: "This is a blockquote"}, {id: 2, text: "This is a blockquote"}, {id: 3, text: "This is a blockquote"}]; 

以及檢查當前用戶或某事已經添加了一個塊引用是上點擊執行的函數。

$scope.addBlockquote = function(userId) { 
    var found = false; 
    for(var i = 0; i < $scope.blockquotes.length; i++) { 
    if ($scope.blockquotes[i].id == userId) { 
    found = true; 
    break; 
    } 
    } 
} 

您的看法或根本HTML模板會遍歷所有的引用文字陣列,並將它們輸出這樣的:

<blockquote ng-repeat="quote in blockquotes">{{quote.text}}</blockquote> 
相關問題