[英]Dynamically add a div and its content
<div class='tagstore' id='tagstore'>
<div class='tagsingle' title='delete'>323</div>
<div class='tagsingle' title='delete'>525</div>
</div>
我需要添加以下內容:
<div class='tagsingle' title='delete'>some variable</div>
JS
var a = 'lorem';
var obj = "<div class='tagsingle' title='delete'>" + a + "</div>";
obj.appendTo('#tagstore');
錯誤: obj.appendTo is not a function...
還嘗試了:
var obj = document.createElement('div');
obj.className = 'tagsingle';
obj.appendTo('#tagstore');
錯誤: obj.appendTo is not a function...
有什么幫助嗎?
您的主要問題是您要在普通JavaScript對象上調用JQuery方法。
有很多方法可以完成您想做的事情:
在JQuery中,有.append()
,但是您必須在應將新元素附加到的對象(而不是要附加的對象.append()
上調用.append()
:
var a = 'lorem'; var obj = "<div class='tagsingle' title='delete'>" + a + "</div>"; $("#tagstore").append(obj); // Or, you can combine the creation of the string and the append: $("#tagstore").append("<div class='tagsingle' title='delete'>" + a + "</div>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div>
並且,還有.appendTo()
,但是您必須在JQuery對象上調用它,並傳遞一個JQuery對象作為要附加到的對象,而不僅僅是選擇器:
var a = 'lorem'; var obj = "<div class='tagsingle' title='delete'>" + a + "</div>"; $(obj).appendTo($('#tagstore'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div>
要在原始JavaScript中插入包含HTML的字符串,它是.innerHTML
:
var a = "Lorem"; document.getElementById("tagstore").innerHTML += "<div class='tagsingle' title='delete'>" + a + "</div>";
<div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div>
但是, .innerHTML
需要構建字符串,並且存在安全性和性能問題。 使用DOM API,您可以創建一個新的DOM節點 ,對其進行配置,然后使用.appendChild()
將其添加到文檔中:
var a = 'lorem'; var obj = document.createElement("div"); obj.classList.add('tagsingle'); obj.title='delete'; obj.textContent = a; document.getElementById("tagstore").appendChild(obj);
<div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div>
使用jQuery創建對象:
$('<div/>').addClass('tagsingle').appendTo('#tagstore');
appendTo
是一個jQuery方法,您正在嘗試在普通JavaScript對象上使用它。
appendTo
是jQuery的一部分,而obj
必須是jQuery元素。 在第一個示例中,它是一個字符串,在第二個示例中,它是一個(簡單香草js)元素。
如果您想使用jQuery並創建一個jQuery元素,只需將字符串用$("...")
。
var a = 'lorem'; var obj = $("<div class='tagsingle' title='delete'>" + a + "</div>"); obj.appendTo('#tagstore');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div>
您正在混合使用jQuery和原始JS。 .appendTo()
是一個jQuery方法,它擴展了$()
對象-在您的情況下obj
實際上是一個String 。
來自http://api.jquery.com/appendto/的基本示例
$( "<p>Test</p>" ).appendTo( ".inner" );
在jQuery中,您可以使用Object Element構造函數,例如:
$("<div/>", { text: "lorem", "class": "tagsingle", title: "delete", appendTo: '#tagstore' });
<div class='tagstore' id='tagstore'> <div class='tagsingle' title='delete'>323</div> <div class='tagsingle' title='delete'>525</div> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
或者,如果您喜歡:
var text = "lorem";
var HTMLString = '<div class="tagsingle" title="delete">'+ text +'</div>';
$(HTMLString).appendTo('#tagstore') // Notice the wrapping $()
只需嘗試append('Content')
而不是appendTo()
。
這應該工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.