溢出包装不会破坏动态添加的 div 上的单词

Posted

技术标签:

【中文标题】溢出包装不会破坏动态添加的 div 上的单词【英文标题】:overflow-wrap not breaking word on dynamically added div 【发布时间】:2018-06-11 06:06:07 【问题描述】:

配方的成分通过 API Ajax 调用动态添加到 div。每一行文本都保留在一行上,这意味着它不会中断并换行到下面的行。我尝试过通过 CSS 样式类添加分词和溢出包装,然后动态添加该类。我没有任何变化。顺便说一句,我的要点也不会出现在每个成分行的前面。

我确实在我的主要 CSS 样式表上方附加并链接了一个 CSS 重置样式表。

https://imgur.com/a/i0ZJc - 截图

javascript

$( document ).ready(function()

function recipeSearch(foodtype)
var searchTerm = $(this).attr("data-name");
var queryURL = "https://api.edamam.com/search?q=" + foodtype + "&app_id=c13467eb&app_key=9cd5b15a4c49f23093c8fe1f1d2c7ce4"

$.ajax(
      url: queryURL,
      method: "GET"
    )
    .done(function(response) 
        console.log(response);


        for (var k = 0; k<10; k++)
            var foodDiv = $("<div class = 'recipeCard'>");


                if (response.hits.length === 0) 
                    $("#recipeOutput").append("<p>" + "Please enter valid recipe ingredient or name." + "</p>");
                ;

            var recipeName = response.hits[k].recipe.label;
            var pOne = $("<p>").html("<h2>" + recipeName + "</h2>");
            foodDiv.append(pOne);

            var recipePic = response.hits[k].recipe.image;
            var pTwo = $("<img class='recipeImage'>").attr("src", recipePic);
            foodDiv.append(pTwo);

            var recipeURL = response.hits[k].recipe.shareAs;
            var pThree =$("<p>").html("<a target='_blank' href='" + recipeURL + "'>" + "Get full recipe here" + "</a>");
            foodDiv.append(pThree);

            var length = response.hits[k].recipe.ingredients.length;

            var ingList = $("<ul>");
            for (var i = 0; i < length; i++)

                var ing = response.hits[k].recipe.ingredients[i].text;
                var pFour = $("<li class='loopText wordBreak'>").text(ing);
                ingList.append(pFour);
            ;
            foodDiv.append(ingList);

            var health = response.hits[k].recipe.healthLabels;
            var pFive = $("<p>").text(health);
            foodDiv.append(pFive);

            $("#recipeOutput").append(foodDiv);
        

    );
;


function clear()
    $("#recipeOutput").empty();


$("#recipeSearch").on("click", function(event)
   var foodtype = $("#recipeInput").val().trim();
   clear();
   recipeSearch(foodtype);
   return false;
);
);

$("#recipeInput").keyup(function(event) 
if (event.keyCode === 13) 
    $("#recipeSearch").click();

);

CSS

li.loopText 
    display: block;
    overflow-wrap: break-all;
    padding: 2px;
    margin 1px auto;
    list-style-type: circle;

label 
    color: white;

wordBreak 
    overflow-wrap: break-word;

HTML

        <div class="col s12 m12 l6 xl6">
            <div class=" panel-boxes">
                <div class="panel-heading">WHAT WOULD YOU LIKE TO COOK?</div>
                <div class="panel-body">
                    <div class="form-group">
                        <input type="text" class="form-control" id="recipeInput">
                        <button type="search" class="btn" id="recipeSearch" style="margin-right: 20px; margin-left: 15px">Search</button>
                    </div>  
                    <div class="panel-body recipesContainer" id="recipeOutput" ></div>
                </div>
            </div>
        </div>

【问题讨论】:

在没有工作页面的情况下很难解决 CSS 问题。您可以链接到 Codepen 或网站托管的其他地方吗? wbwelch.github.io/DayTripper/stayin.html 这样就够了吗? 我看到一些 js 错误 - Uncaught TypeError: Cannot read property 'recipe' of undefined 【参考方案1】:

对列表项使用li white-space: normal;

这在 Chrome 和 Safari 中似乎对我有用。 或者,对整个 ul 使用ul white-space: normal;,所有列表项都会继承它。

【讨论】:

效果很好。谢谢!

以上是关于溢出包装不会破坏动态添加的 div 上的单词的主要内容,如果未能解决你的问题,请参考以下文章

怎么用JQuery动态添加div 比如 添加 点击一次添加按钮 增加一个div

如何让三个元素填充一个 div,其中中心元素具有动态宽度?

js 动态添加元素(div、li、img等)及设置属性的方法

js 动态添加元素(divliimg等)及设置属性

js 动态添加元素(divliimg等)及设置属性

AutoCShow 不会触发动态添加的单词?