我正在code工作 - https://jsfiddle.net/md_bender/pj6a1akz/3/。我需要创建新元素并将它们附加到现有元素ul。通过创建元素并附加一切都可以。 但我不知道如何在创建的元素中创建子元素。我需要创建
wb
在我之前在脚本中创建的div中。它一定是那样的
<img src="path"/>
但我唯一能做的就是创建div的下一个兄弟
<div class="img-w js-popup">
<img src="path"/>
</div>
<a href="delete.php">Delete</a>
谁能帮助我并解决我的问题?
答案 0 :(得分:2)
您可以在将该div附加到img
之前将div
附加到li
。您也可以编写相同的代码,例如Fiddle
$('<li/>')
.append($('<div/>', {
'class': 'img-w js-popup',
}).append($('<img/>', {
'src': '//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80'
})))
.append($('<a/>', {
href: 'delete.php',
text: 'Delete'
}))
.appendTo('ul');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<div>
<img src="//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80" alt="" />
</div>
<a href="delete.php">Delete</a>
</li>
</ul>
答案 1 :(得分:0)
问题是因为append()
电话是li
本身,而不是您刚添加的div
。试试这个:
var $div = $('<div/>', {
'class': 'img-w js-popup'
});
$('<img/>', {
'src': '//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80'
}).appendTo($div)
$('<li/>').append($div).append($('<a/>', {
href: 'delete.php',
text: 'Delete'
})).appendTo('ul');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
<div>
<img src="//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80" alt="" />
</div>
<a href="delete.php">Delete</a>
</li>
</ul>
话虽如此,您正在使用最详细的创建HTML的方法。由于您对所有属性进行了硬编码,因此只需提供纯字符串即可简化 - 甚至只需克隆前一个li
并附加该字符串即可。
答案 2 :(得分:0)
如果不需要单个DOM(li,div,img),则更容易创建静态字符串并将整个附加到列表中,就像那样(记住反斜杠):
$('ul').append("<li><div><img src=\"//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80\" alt=\"\"/></div><a href=\"delete.php\">Delete</a></li>");
答案 3 :(得分:0)
$('<li/>')
.append($('<div/>', {
'class': 'img-w js-popup',
}))
.append($('<div/>', {
'id': 'idOFDiv'
}))
.append($('<a/>', {
href: 'delete.php',
text: 'Delete'
}))
.appendTo('ul');
$("#idOFDiv").append($('<img/>', {
'src': '//www.gravatar.com/avatar/9142888a2ae6160f2faec90134eeafa3/?default=&s=80'
}));