簡體   English   中英

如何使用jquery包圍每個內容 <div> 用一個標簽 <marquee> 標簽

[英]How to use jquery to surround the contents of every <div> tag with a <marquee> tag

我很好奇我將如何編寫單行代碼來使用每個div,並使用jquery將其內容用選取框標記包圍。 例如,我希望它采取

<div class="foo">Hello <div class="bar">World</div></div>

然后變成

<div class="foo"><marquee>Hello <div class="bar"><marquee>World</marquee></div></marquee></div>

我最初的嘗試失敗了:

$("div").each(function() $(this).html("<marquee>"+$(this).html()+"</marquee>")});

當到達嵌套的div標簽時,它失敗了,因為添加了字幕標簽后,最外面的標簽的內容被替換了,從而無效了對內部標簽的引用。 我並不擔心再次執行JavaScript。

你會怎么做?

考慮來自其他用戶的關於不使用不推薦使用的元素的建議,但出於示例目的,以下解決方案:

從有關.html()jQuery文檔中

使用.html()設置元素的內容時,該元素中的所有內容都將被新內容完全替換。 此外,在用新內容替換那些元素之前,jQuery從子元素中刪除了其他構造,例如數據和事件處理程序。

jQuery會刪除子項的引用甚至事件(嗯,不會刪除,它們會再次被創建為新元素,因此您不會保留以前的事件和引用)。

然后,不要使用.html() ,而是創建一個新的marquee元素並將原始div的子代添加到該元素,然后將該marquee附加到div:

$("div").each(function(){
    var newMarquee = $('<marquee>');
    newMarquee.append($(this).children());
    $(this).append(newMarquee);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM