删除基于条件jquery的p标记



为了好玩,我正在创建一个类似谷歌的搜索应用程序,但我遇到了一个问题。

所以现在我正在成功地取回我想要的数据。我也在展示我想要的东西。但是,对于我渲染的某些属性,有些结果是未定义的。因此页面将它们呈现为未定义。

我正在尝试编写一个条件,检查单个对象的属性是否未定义。我能够用一个图像成功地做到这一点,如果一个对象没有图像属性,我会给它分配一个通用图像。我现在遇到的问题是,当一个对象找不到特定的属性时,我想删除与显示该特定对象的属性相关联的

标记。然而,它正在删除所有具有该类名的

标记。

function render() {
$.each(loadedBooks, function(index, book) {
checkData();
$('#results').prepend(
"<hr><div id =" + book.id + " class = 'book'><li>" + "<p class='thumbnail'><img src=" + book.volumeInfo.imageLinks.thumbnail + "></img></p>" +
"<p class='title'>" + book.volumeInfo.title + "</p>" +
"<p class ='subtitle'>" + book.volumeInfo.subtitle + "</p>" +
"<p class='authors'>" + book.volumeInfo.authors + "</p></div>"
);
})
}
function checkData() {
for (var i = 0; i < loadedBooks.length; i++) {
if (typeof loadedBooks[i].volumeInfo.subtitle === "undefined") {
$('.subtitle').remove('p');
};
if (!loadedBooks[i].volumeInfo.hasOwnProperty('imageLinks')) {
loadedBooks[i].volumeInfo.imageLinks = {
thumbnail: "http://i.imgur.com/sJ3CT4V.gif"
}
};
}
}

在过去的两天里,我一直在绞尽脑汁,试图让它正常工作。两天前,在我决定重新开始之前,我有一个成功的实现(与上面的类型非常相似),确实有效,但我不确定我做错了什么。谢谢

$('.subtitle')返回一个所有元素的数组,子标题为
这就是为什么我们在纯JavaScript中编写:
document.getElementsByClassName('...');元素s(pural)
$('#subtitle')等于:
document.getElementById('...');元素(单数)
因此,您所需要做的就是指定要从该数组中删除的元素。

替换:$('.subtitle')$($('.subtitle')[i])
或在更好的jQuery中,使用:
$('.subtitle:eq('+i+')');$('.subtitle:nth-of-type('+i+1+')');

最新更新