2010-05-30 130 views
0

我構建<li>元素是這樣的:只有在li元素尚未存在的情況下才添加li元素?

var element = $("<li></li>") 
    .html(mHTML) 
    .attr('id', "elemid"); 

我想這個元素添加到,只有當它不存在一個<ul>元素。任何想法如何做到這一點?我是否應該使用來查看ul元素是否包含html,然後決定?例如,

<ul id="elemul"> 
    <li id="elemli1">Element 1</li> 
    <li id="elemli2">Element 2</li> 
    <li id="elemli3">Element 3</li> 
</ul> 

如果我嘗試添加元素1,它不應該添加它。如果它的字符串較長(不是很長,但大約有150個字符),我該怎麼辦?

注:我不能依靠ID來確定唯一性。即我可能最終形成類似的東西:<li id="elemli3">Element 1</li>

我會去使用hashmaps嗎?

+0

@Delan:感謝您的固定標籤。 :) – Legend 2010-05-30 06:02:46

+0

沒問題。 :-) – 2010-05-30 06:07:17

回答

2
if(!$('#elemul li:contains("Element 1")').length) 
{ 
    $('#elemul').append($('li').attr('id', 'elemli1').text('Element 1')); 
} 
+0

根據OP的要求,這是正確的。不幸的是,在大多數情況下,'contains'幾乎是無用的。它是區分大小寫的,你不能把它限制在整個比賽中; 'li:contains(「元素1」)'也會得到'

  • 元素100
  • '。將這些數據保存在一個變量中,而不是在DOM中可能會更好。 – Kobi 2010-05-30 09:18:15

    2

    我不是一個jQuery用戶,請耐心等待。但是,原生JavaScript可以很容易地轉換成jQuery代碼。

    if (!document.getElementById('elemli1')) { 
        var elemli1 = document.createElement('li'); 
        elemli1.id = 'elemli1'; 
        document.getElementById('elemul').appendChild(elemli1); 
    } 
    

    如果你想如果沒有列表項列表中的所有創建一個元素,更換,如果表達式:

    !document.getElementById('elemul').childNodes.length 
    
    +0

    感謝您的提示。對不起,我不清楚。在我的情況下,內容可能會帶有不同的ID。剛更新了我的帖子。 – Legend 2010-05-30 06:05:23

    +0

    好吧。更新我的帖子以獲得更有幫助的答案。 – 2010-05-30 06:09:13

    +0

    +1小費德蘭。我現在正在學習jQuery,所以我正在尋找更多的jQuerish方法:)感謝您的時間。 – Legend 2010-05-31 01:25:30