【发布时间】:2015-05-07 12:50:05
【问题描述】:
我正在尝试使用 jQuery 从 DOM 中删除一个项目,有时会得到一个 prevObject 而不是一个元素。我知道当没有找到元素时会返回 prevObject,如here 解释的那样
我创建了一个单页应用程序,它以两种不同的方式将元素添加到播放列表中,一种是通过拖放,另一种是通过按下按钮。两种方式都调用同一个函数,传入相关信息。
当我点击一个已被拖放的元素的移除按钮时,它被成功移除,但任何通过该按钮添加到播放列表的项目都不会被移除,因为 prevObject 是由 jQuery 返回的。
项目can be found here如果你需要好好看看。
HTML(来自 chrome 开发工具)
顶部项目已被拖放,第二个通过按钮。
<aside class="col-sm-12 ui-sortable" id="sortable">
<article class="dropped" id="2">
<img src="http://img.youtube.com/vi/gnbLLQwZxeA/mqdefault.jpg" alt="Put social back in social media">
<h3>Put social back in social media</h3>
<div class="clearfix"></div>
<a href="#" title="Remove item" id="remove2"><i class="fa fa-minus-circle"></i></a>
</article>
<article class="dropped" id="3">
<img src="http://img.youtube.com/vi/ccFLVPNBRE4/mqdefault.jpg" alt="jQuery Performance Myths and Realities">
<h3>jQuery Performance Myths and Realities</h3>
<div class="clearfix"></div>
<a href="#" title="Remove item" id="remove3"><i class="fa fa-minus-circle"></i></a></article>
// more items here
</aside>
将项目添加到播放列表的功能
var addToPlayList = function(title, image, id){
var playlistItem = '';
playlistItem += '<article class="dropped" id="' + id + '">';
playlistItem += '<img src="' + image + '" alt="' + title + '">';
playlistItem += '<h3>' + title + '</h3>';
playlistItem += '<div class="clearfix"></div>';
playlistItem += '<a href="#" title="Remove item" id="remove' + id +'"><i class="fa fa-minus-circle"></i></a>';
playlistItem += '</article>';
$(playlistItem).insertBefore('.droppable');
$('.playlist #remove' + id).click(function(ev) {
removePlaylistItem(id);
});
fixClearfix();
}
从播放列表中删除项目的功能
var removePlaylistItem = function(id){
var itemToRemove = $('aside article#' + id);
console.log(itemToRemove); // returns prev object for items added by button
itemToRemove.remove();
var video = findVideoByID(id);
displayVideo(video, id);
fixClearfix();
}
非常感谢任何帮助
【问题讨论】:
标签: javascript jquery html