附加对象而不是 html

Posted

技术标签:

【中文标题】附加对象而不是 html【英文标题】:Appending objects instead of html 【发布时间】:2021-11-09 19:09:03 【问题描述】:

我试图在鼠标单击时插入一些引导元素,但它似乎插入了[object Object],猜猜我错在哪里,提前谢谢

Jquery sn-p

// adding skills container
let addSkillsContainer = () =>
  
    let div_contain =$("<div></div")
    div_contain.addClass("col-md-5")
    div_contain.append(
        $("<div></div").addClass("form-group input-group").append(
            $("<input>").attr("type","text").addClass("form-control")
        )
    )

    let main_container = $(".main-contain")[0]
    main_container.append(div_contain)



// event for calling skills add function
$(add).on('click', function (e) 
    e.preventDefault()

    addSkillsContainer()
    console.log('clicked')
    
);

html 输出

[object Object][object Object][object Object][object Object][object Object][object Object]

【问题讨论】:

【参考方案1】:

这部分代码有问题

let main_container = $(".main-contain")[0]
    main_container.append(div_contain)

在 jQuery 中,如果你访问 like 数组,它会返回 html dom 对象。

改成

let main_container = $(".main-contain").eq(0)
        main_container.append(div_contain)

【讨论】:

效果很好,但在$(".main-contain")[0]$(".main-contain").eq(0) 之间存在差异? $(".main-contain").eq(0) 返回 jQuery 对象,但 $(".main-contain")[0] 返回 html dom 元素对象。 html element append function 和 jquery append function【参考方案2】:

试试这个

let addSkillsContainer = () =>
    const div_contain =`
        <div class='col-md-5'>
            <div class="form-group input-group">
                <input type="text" class="form-control">
            </div>
        </div>
    `;

    $(".main-contain")[0].innerHTML +=div_contain;

$("#add").on('click', function (e) 
    e.preventDefault()

    addSkillsContainer();
    
);

let addSkillsContainer = () =>
    const div_contain =`
        <div class='col-md-5'>
            <div class="form-group input-group">
                <input type="text" class="form-control">
            </div>
        </div>
    `;

    $(".main-contain")[0].innerHTML +=div_contain;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id="add">Add</button>

<div class="main-contain">

</div>

【讨论】:

仍在插入该对象

以上是关于附加对象而不是 html的主要内容,如果未能解决你的问题,请参考以下文章

当我删除对象时,jQuery 是不是会自动从对象中删除附加的处理程序?

如何附加不是来自数据库的实体框架对象?

附加到不是数组的 JS 对象?

我如何判断一个对象是不是附加了键值观察器

将 HTML 编码的字符串附加为 HTML,而不是文本

将多个元素附加到 DOM 的 jquery 会丢失排序顺序