2015-06-10 67 views
5

我對javascript代碼與HTML代碼的交互有個疑問。javascript元素「:last」混淆

在講座的這部分我的工作,我把我的工作信息到一個.js文件使用一個for循環,然後與其他.js.html文件交互的方式輸出我的工作/作用到index.html,然後我做到了,像這樣:

for (var i = 0; i < work.length; i++) { 
    var role = HTMLworkTitle.replace("%data%",work[i].role); 
    var employer = HTMLworkEmployer.replace("%data%",work[i].name); 
    var description = HTMLworkDescription.replace("%data%",work[i].Description); 
    var employerinfo = employer + role; 
    $("#workExperience").append(HTMLworkStart); 
    $(".work-entry:last").append(employerinfo); 
} 

的代碼工作正常,但我試圖理解爲什麼我們需要「:最後一個」在「工作進入:最後一個」。另一個文件,helper.js只有具有如下所示的「工作條目」,首先,一個元素條目:

var HTMLworkStart = '<div class="work-entry"></div>'; 
var HTMLworkEmployer = '<a href="#">%data%'; 
var HTMLworkTitle = ' - %data%</a>'; 

於是,我拿出「:最後一個」,結果開始做隨機重複的「employerinfo」輸出。

+0

你能顯示你的html嗎? –

+1

我猜'僱主信息'也包含一個div類'工作條目' – adeneo

+0

可能代碼只查找'一個'匹配......所以嘗試使用':first'並且看到它的行爲相同。該文檔將對您有所幫助,https://api.jquery.com/last-selector/ – nehemiah

回答

0

:last是一個jQuery特定的元選擇器。請參閱文檔中的示例以進行說明。它所做的只是選擇當前選擇中的最後一個元素。由於work-entry是一個CSS類,它提示可能有多個DOM元素被分配給這個類。但是您的代碼似乎只想將employerinfo附加到頁面上的最後一個work-entry。在新的僱主添加到您的DOM後,我想代碼會被執行。因此,如果您沒有:last,它會將當前employerinfo附加到已經存在的僱主,而不是僅附加新附加的僱主。