各位先進好,簡單案例如下:
<div class="first">
<div class="second">
<div class="third">小王</div>
</div>
</div>
<div class="first">
<div class="second">
<div class="third">bsl</div>
</div>
</div>
$('.first').each(function(i){
$('.first .third').text(i);
})
需求:
由於class名稱一樣(由元件產生,不是自己建構的class),透過jquery取得物件後用each遍歷,並取得想要的位置改變文字內容
以上程式碼預期結果:
0
1
實際結果:
1
1
請問有什麼好方法可以達成想要的結果嗎?
謝謝支援
$('.first .third').each(function(i){
$(this).text(i);
})
你原本的寫法每次都會抓所有的[.first .third]去改
土法煉鋼的範例提供您參考:
$(".first").each(function(i) {
$(this).find('.third').text(i);
});
補充一個類似的範例:
$.each($('.first'), function(i){
$(this).find('.third').text(i);
});
上列兩個範例在這邊會得到同樣的結果,不過$(selector).each()
跟 $.each()
有一些小差異,可以參考下列網頁說明:
https://www.itread01.com/articles/1475842321.html
可以用eq來指定要改第幾個元件。
如
$(".first").eq(0).find(".third").text("要改的文字");
如果有對應資料可供替換。如以下的處理方式
var data = ["一","二","三"];
$(".first").each(function(i,v){
var str = data[i] ? data[i] : $(this).find(".third").text();
$(this).find(".third").text(str);
});