如何将所有子元素包装在一个类中?

我有一个函数可以拆分元素中的所有行并将它们包装在<div>. 例如,如果我有一个看起来像这样的元素:


<div class="test">

  Lorem Khaled Ipsum is a major key to success. I’m up to something. To be successful you’ve

  got to work hard, to make history, simple, you’ve got to make it. I told you all this before, when 

  you have a swimming pool, do not use chlorine, use salt water, the healing, salt water is the healing. 

  The key to more success is to get a massage once a week, very important, major key, cloth talk. 

  Wraith talk. Don’t ever play yourself. 

</div>

然后它像这样包装所有行:


<div class="test">

  <div class="line_wrap">Lorem Khaled Ipsum is a major key to success. I’m up to something. To be successful you’ve</div>

  <div class="line_wrap">got to work hard, to make history, simple, you’ve got to make it. I told you all this before, when </div> 

  <div class="line_wrap">you have a swimming pool, do not use chlorine, use salt water, the healing, salt water is the healing. </div> 

  <div class="line_wrap">The key to more success is to get a massage once a week, very important, major key, cloth talk. </div> 

  <div class="line_wrap">Wraith talk. Don’t ever play yourself.</div> 

</div>

我遇到的问题是我正在寻找一种将这些物品包装在另一个中的方法,<div>例如:


<div class="test">

  <div class="wrap">

    <div class="line_wrap">Lorem Khaled Ipsum is a major key to success. I’m up to something. To be successful you’ve</div>

    <div class="line_wrap">got to work hard, to make history, simple, you’ve got to make it. I told you all this before, when </div> 

    <div class="line_wrap">you have a swimming pool, do not use chlorine, use salt water, the healing, salt water is the healing. </div> 

    <div class="line_wrap">The key to more success is to get a massage once a week, very important, major key, cloth talk. </div> 

    <div class="line_wrap">Wraith talk. Don’t ever play yourself.</div> 

  </div>

</div>

到目前为止,我已经尝试wrapall使用.each函数,但它做了 4 层包装,如果我有多个元素,它将获取所有元素并将它们放在第一个元素中。


我的问题是:如何将所有孩子包装成一个<div>?


弑天下
浏览 90回答 3
3回答

慕的地6264312

您可以通过仅针对我们在内部方法中循环.line_wrap的当前div 中的 div来解决此问题。这是必要的,这样我们就不会在所有div中一次包装所有内容:.wrapped.each().line_wrap.wrapped$(".emails .multi-items .wrapped").each(function (i) {&nbsp; &nbsp; $('.line_wrap', this).wrapAll("<div class='test'></div>");});工作演示:function wrapNewLines(targetSelector, wrapEl = 'span', wrapClass = 'new-line') {&nbsp; const content = document.querySelectorAll(targetSelector)&nbsp; content.forEach(section => {&nbsp; &nbsp; let sectionWidth = section.getBoundingClientRect().width&nbsp; &nbsp; let words = section.innerText.split(/( )/g)&nbsp; &nbsp; section.innerHTML = ''&nbsp; &nbsp; words.forEach(word => {&nbsp; &nbsp; &nbsp; section.innerHTML += `<span>${word}</span>`&nbsp; &nbsp; })&nbsp; &nbsp; let lines = []&nbsp; &nbsp; let line = []&nbsp; &nbsp; let lineWidth = 0&nbsp; &nbsp; let spans = section.querySelectorAll('span')&nbsp; &nbsp; spans.forEach((span, i) => {&nbsp; &nbsp; &nbsp; let spanWidth = span.getBoundingClientRect().width&nbsp; &nbsp; &nbsp; if (lineWidth + spanWidth <= sectionWidth - 1) {&nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; lines.push(line)&nbsp; &nbsp; &nbsp; &nbsp; line = []&nbsp; &nbsp; &nbsp; &nbsp; lineWidth = 0&nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })&nbsp; &nbsp; if (line.length) lines.push(line)&nbsp; &nbsp; let newLines = lines&nbsp; &nbsp; &nbsp; .map(&nbsp; &nbsp; &nbsp; &nbsp; line =>&nbsp; &nbsp; &nbsp; &nbsp; `<${wrapEl} class=${wrapClass}>${line&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(span => span.innerText)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .join('')}</${wrapEl}>`&nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; .join('')&nbsp; &nbsp; section.innerHTML = newLines&nbsp; })}wrapNewLines('.emails .multi-items .message-contain #content', 'div', 'line_wrap');$.each($('.message-contain'), function(i, message) {&nbsp; var size = 6; //define how many elements you want in each wrapper&nbsp; var items = $(message).find('.line_wrap'); //the collection of all your items&nbsp; var container; //this will be used to add the items in it.&nbsp; $.each(items, function(i, item) {&nbsp; &nbsp; //this expression checks if we need to create a new container&nbsp; &nbsp; if (i % size === 0) {&nbsp; &nbsp; &nbsp; container = $('<div class="wrapped"></div>'); //create a new container&nbsp; &nbsp; &nbsp; $(message).append(container); //add the new container to the body&nbsp; &nbsp; }&nbsp; &nbsp; $(item).appendTo(container); //add the item to the container&nbsp; });});$(".emails .multi-items .wrapped").each(function (i) {&nbsp; &nbsp; $('.line_wrap', this).wrapAll("<div class='test'></div>");});.wrapped {&nbsp; background: black;&nbsp; color: white}.line_wrap {&nbsp; border: 1px solid #aa0000;&nbsp; padding: 4px 8px;}#content {&nbsp; margin: 35px}.test {&nbsp; color: yellow}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div class="emails">&nbsp; <ul class="multi-items">&nbsp; &nbsp; <div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; 1 - The first of the month is coming, we have to get money, we have no choice. It cost money to eat and they don’t want you to eat. Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast, so we are going to enjoy&nbsp; &nbsp; &nbsp; &nbsp; our breakfast. They key is to have every key, the key to open every door. To succeed you must believe. When you believe, you will succeed. They don’t want us to eat. Another one. Major key, don’t fall for the trap, stay focused. It’s the ones&nbsp; &nbsp; &nbsp; &nbsp; closest to you that want to see you fail. To be successful you’ve got to work hard, to make history, simple, you’ve got to make it. The key to success is to keep your head above the water, never give up. Stay focused. They don’t want us to eat.&nbsp; &nbsp; &nbsp; &nbsp; The key is to drink coconut, fresh coconut, trust me. Give thanks to the most high. Surround yourself with angels, positive energy, beautiful people, beautiful souls, clean heart, angel. Congratulations, you played yourself. Major key, don’t fall&nbsp; &nbsp; &nbsp; &nbsp; for the trap, stay focused. It’s the ones closest to you that want to see you fail. They never said winning was easy. Some people can’t handle success, I can. Another one. You smart, you loyal, you a genius. Look at the sunset, life is amazing,&nbsp; &nbsp; &nbsp; &nbsp; life is beautiful, life is what you make it. The key to success is to keep your head above the water, never give up. They don’t want us to eat. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat&nbsp; &nbsp; &nbsp; &nbsp; and tears, and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </div>&nbsp; &nbsp; <div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; 2 - The key to more success is to get a massage once a week, very important, major key, cloth talk. Eliptical talk. Every chance I get, I water the plants, Lion! Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast,&nbsp; &nbsp; &nbsp; &nbsp; so we are going to enjoy our breakfast. The other day the grass was brown, now it’s green because I ain’t give up. Never surrender. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat and tears,&nbsp; &nbsp; &nbsp; &nbsp; and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </div>&nbsp; </ul></div>

慕勒3428872

只需删除 children 函数,因为您想包装 jQuery 集合本身。function wrapNewLines(targetSelector, wrapEl = 'span', wrapClass = 'new-line') {&nbsp; &nbsp; const content = document.querySelectorAll(targetSelector)&nbsp; &nbsp; content.forEach(section => {&nbsp; &nbsp; &nbsp; let sectionWidth = section.getBoundingClientRect().width&nbsp; &nbsp; &nbsp; let words = section.innerText.split(/( )/g)&nbsp; &nbsp; &nbsp; section.innerHTML = ''&nbsp; &nbsp; &nbsp; words.forEach(word => {&nbsp; &nbsp; &nbsp; &nbsp; section.innerHTML += `<span>${word}</span>`&nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; let lines = []&nbsp; &nbsp; &nbsp; let line = []&nbsp; &nbsp; &nbsp; let lineWidth = 0&nbsp; &nbsp; &nbsp; let spans = section.querySelectorAll('span')&nbsp; &nbsp; &nbsp; spans.forEach((span, i) => {&nbsp; &nbsp; &nbsp; &nbsp; let spanWidth = span.getBoundingClientRect().width&nbsp; &nbsp; &nbsp; &nbsp; if (lineWidth + spanWidth <= sectionWidth - 1) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lines.push(line)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line = []&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; if (line.length) lines.push(line)&nbsp; &nbsp; &nbsp; let newLines = lines&nbsp; &nbsp; &nbsp; &nbsp; .map(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line =>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `<${wrapEl} class=${wrapClass}>${line&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(span => span.innerText)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .join('')}</${wrapEl}>`&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; .join('')&nbsp; &nbsp; &nbsp; section.innerHTML = newLines&nbsp; &nbsp; })}&nbsp; &nbsp;&nbsp;wrapNewLines('.emails .multi-items .message-contain #content','div', 'line_wrap');$.each($('.message-contain'), function(i, message) {&nbsp;&nbsp; var size = 6; //define how many elements you want in each wrapper&nbsp; var items = $(message).find('.line_wrap'); //the collection of all your items&nbsp; var container; //this will be used to add the items in it.&nbsp;&nbsp;&nbsp; $.each(items, function(i, item) {&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; //this expression checks if we need to create a new container&nbsp; &nbsp; if (i % size === 0) {&nbsp; &nbsp; &nbsp; container = $('<div class="wrapped"></div>'); //create a new container&nbsp; &nbsp; &nbsp; $(message).append(container); //add the new container to the body&nbsp; &nbsp; }&nbsp; &nbsp; $(item).appendTo(container); //add the item to the container&nbsp; &nbsp;});});$('.wrapped').each(function () {&nbsp; $(this).find('.line_wrap').wrapAll("<div class='test'></div>")});.wrapped {background:black;color:white}.line_wrap {border:1px solid #aa0000}#content {margin:35px}.test {color:yellow}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div class="emails"><ul class="multi-items">&nbsp; <div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 -&nbsp; The first of the month is coming, we have to get money, we have no choice. It cost money to eat and they don’t want you to eat. Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast, so we are going to enjoy our breakfast. They key is to have every key, the key to open every door. To succeed you must believe. When you believe, you will succeed. They don’t want us to eat.Another one. Major key, don’t fall for the trap, stay focused. It’s the ones closest to you that want to see you fail. To be successful you’ve got to work hard, to make history, simple, you’ve got to make it. The key to success is to keep your head above the water, never give up. Stay focused. They don’t want us to eat. The key is to drink coconut, fresh coconut, trust me. Give thanks to the most high. Surround yourself with angels, positive energy, beautiful people, beautiful souls, clean heart, angel. Congratulations, you played yourself.Major key, don’t fall for the trap, stay focused. It’s the ones closest to you that want to see you fail. They never said winning was easy. Some people can’t handle success, I can. Another one. You smart, you loyal, you a genius. Look at the sunset, life is amazing, life is beautiful, life is what you make it. The key to success is to keep your head above the water, never give up. They don’t want us to eat. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat and tears, and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; </div><div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 - The key to more success is to get a massage once a week, very important, major key, cloth talk. Eliptical talk. Every chance I get, I water the plants, Lion! Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast, so we are going to enjoy our breakfast. The other day the grass was brown, now it’s green because I ain’t give up. Never surrender. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat and tears, and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; </div></ul></div>

HUH函数

您可以尝试使用.wrapped元素创建一个循环,找到.line_wrap里面的所有元素并将它们包装起来:$('.wrapped').each(function () {&nbsp; &nbsp; $(this).find('.line_wrap').wrapAll("<div class='test'></div>")});function wrapNewLines(targetSelector, wrapEl = 'span', wrapClass = 'new-line') {&nbsp; &nbsp; const content = document.querySelectorAll(targetSelector)&nbsp; &nbsp; content.forEach(section => {&nbsp; &nbsp; &nbsp; let sectionWidth = section.getBoundingClientRect().width&nbsp; &nbsp; &nbsp; let words = section.innerText.split(/( )/g)&nbsp; &nbsp; &nbsp; section.innerHTML = ''&nbsp; &nbsp; &nbsp; words.forEach(word => {&nbsp; &nbsp; &nbsp; &nbsp; section.innerHTML += `<span>${word}</span>`&nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; let lines = []&nbsp; &nbsp; &nbsp; let line = []&nbsp; &nbsp; &nbsp; let lineWidth = 0&nbsp; &nbsp; &nbsp; let spans = section.querySelectorAll('span')&nbsp; &nbsp; &nbsp; spans.forEach((span, i) => {&nbsp; &nbsp; &nbsp; &nbsp; let spanWidth = span.getBoundingClientRect().width&nbsp; &nbsp; &nbsp; &nbsp; if (lineWidth + spanWidth <= sectionWidth - 1) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lines.push(line)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line = []&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line.push(span)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lineWidth += spanWidth&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; if (line.length) lines.push(line)&nbsp; &nbsp; &nbsp; let newLines = lines&nbsp; &nbsp; &nbsp; &nbsp; .map(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; line =>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `<${wrapEl} class=${wrapClass}>${line&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(span => span.innerText)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .join('')}</${wrapEl}>`&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; .join('')&nbsp; &nbsp; &nbsp; section.innerHTML = newLines&nbsp; &nbsp; })}&nbsp; &nbsp;&nbsp;wrapNewLines('.emails .multi-items .message-contain #content','div', 'line_wrap');$.each($('.message-contain'), function(i, message) {&nbsp;&nbsp; var size = 6; //define how many elements you want in each wrapper&nbsp; var items = $(message).find('.line_wrap'); //the collection of all your items&nbsp; var container; //this will be used to add the items in it.&nbsp;&nbsp;&nbsp; $.each(items, function(i, item) {&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; //this expression checks if we need to create a new container&nbsp; &nbsp; if (i % size === 0) {&nbsp; &nbsp; &nbsp; container = $('<div class="wrapped"></div>'); //create a new container&nbsp; &nbsp; &nbsp; $(message).append(container); //add the new container to the body&nbsp; &nbsp; }&nbsp; &nbsp; $(item).appendTo(container); //add the item to the container&nbsp; &nbsp;});});$('.wrapped').each(function () {&nbsp; $(this).find('.line_wrap').wrapAll("<div class='test'></div>")});.wrapped {background:black;color:white}.line_wrap {border:1px solid #aa0000}#content {margin:35px}.test {color:yellow}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div class="emails"><ul class="multi-items">&nbsp; <div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 -&nbsp; The first of the month is coming, we have to get money, we have no choice. It cost money to eat and they don’t want you to eat. Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast, so we are going to enjoy our breakfast. They key is to have every key, the key to open every door. To succeed you must believe. When you believe, you will succeed. They don’t want us to eat.Another one. Major key, don’t fall for the trap, stay focused. It’s the ones closest to you that want to see you fail. To be successful you’ve got to work hard, to make history, simple, you’ve got to make it. The key to success is to keep your head above the water, never give up. Stay focused. They don’t want us to eat. The key is to drink coconut, fresh coconut, trust me. Give thanks to the most high. Surround yourself with angels, positive energy, beautiful people, beautiful souls, clean heart, angel. Congratulations, you played yourself.Major key, don’t fall for the trap, stay focused. It’s the ones closest to you that want to see you fail. They never said winning was easy. Some people can’t handle success, I can. Another one. You smart, you loyal, you a genius. Look at the sunset, life is amazing, life is beautiful, life is what you make it. The key to success is to keep your head above the water, never give up. They don’t want us to eat. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat and tears, and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; </div><div class="message-contain">&nbsp; &nbsp; &nbsp; <div id="content">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 - The key to more success is to get a massage once a week, very important, major key, cloth talk. Eliptical talk. Every chance I get, I water the plants, Lion! Egg whites, turkey sausage, wheat toast, water. Of course they don’t want us to eat our breakfast, so we are going to enjoy our breakfast. The other day the grass was brown, now it’s green because I ain’t give up. Never surrender. Put it this way, it took me twenty five years to get these plants, twenty five years of blood sweat and tears, and I’m never giving up, I’m just getting started.&nbsp; &nbsp; &nbsp; </div>&nbsp; </div></ul></div>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript