2014-04-14 75 views
0

我與jasascript挺新的,jQuery和我試圖創建當用戶有達成誠勿擾,將出現一個彈出。此彈出窗口將具有用戶名和成就的標題。 這裏的HTML更改跨度內容與JavaScript

<div class="popUp"> 
    <img src="" alt="avatar" id="imgPop"/> 
    <h3 class="nomUser"><span></span></h3> 
    <p class="popAtteint">A atteint l'objectif:</p> 
    <p class="objAtteint"><span></span></p> 
</div> 

,這是JavaScript

function afficher(nom,objectif){ 
    if(!$(".nomUser").length){ 
     $(".nomUser").append("<span></span>"); 
    } 
    if(!$(".objAtteint").length){ 
     $(".objAtteint").append("<span></span>"); 
    } 
    $(".nomUser span").append(nom); 
    $(".objAtteint span").append(objectif); 
    $(".popUp").animate({opacity:100},1000); 
    $(".popUp").delay(1000).animate({opacity:0},2000,function(){ 
     $(".nomUser span").remove(); 
     $(".objAtteint span").remove(); 
    }); 
} 

它第一次彈出它的工作原理perfecly但它沒有任何其他的時間......我認爲這個問題是我的「如果」不工作,我不明白爲什麼。

(對不起,我的英語)

回答

0

你兩個if語句檢查長度不檢查權元素的存在,這是造成你選擇的是試圖追加到不找到什麼。

第一次通過你的DOM的樣子:

<div class="nomUser"> 
    <span></span> 
</div> 

,但第二次通過,它看起來像:

<div class="nomUser"> 
</div> 

當代碼追加「NOM」運行時,它不執行,因爲它無法找到嵌套在具有名義用戶的元素下的跨度類

$(".nomUser span").append(nom); // Not found :-(

下面應該工作:

function afficher(nom,objectif){ 
    if(!$(".nomUser span").length){ 
     $(".nomUser").append("<span></span>"); 
    } 
    if(!$(".objAtteint span").length){ 
     $(".objAtteint").append("<span></span>"); 
    }   
    $(".nomUser span").append(nom); 
    $(".objAtteint span").append(objectif); 
    $(".popUp").animate({opacity:100},1000); 
    $(".popUp").delay(1000).animate({opacity:0},2000,function(){ 
     $(".nomUser span").remove(); 
     $(".objAtteint span").remove(); 
    }); 
} 
0
!$(".nomUser").length 

這意味着不存在這樣的元素。使用

if ($(".nomUser").text().length == 0) 

如果你要檢查它的空