我正在创建一个类似google的搜索应用程序以便娱乐,但遇到了问题。
因此,现在我已成功获取想要的数据。我也展示了我想要的东西。但是,对于某些我渲染的属性,某些结果尚未定义。因此页面将它们呈现为未定义。
我正在尝试编写一个条件,检查单个对象的属性是否未定义。我可以使用图像成功完成此操作,如果对象没有图像属性,则可以为其分配一个通用图像。我现在遇到的问题是,当对象找不到特定属性时,我想删除与显示该特定对象的属性相关的标签。然而,正在发生的是删除具有该类名称的所有标签。
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"
}
};
}
}
在过去的两天里,我一直在绞尽脑汁,努力使它正常工作。两天前我有一个实现,然后我决定从头开始,DID工作成功(非常类似于上面的typeof),但是我不确定自己在做什么。谢谢
最佳答案
$('.subtitle')
返回带有类字幕的所有元素的数组。
这就是为什么在纯JavaScript中我们这样写:document.getElementsByClassName('...');
元素(纯净)。而$('#subtitle')
等于:document.getElementById('...');
元素(单数)。因此,您所需要做的就是指定要从该数组中删除哪个元素。
更换:$('.subtitle')
与$($('.subtitle')[i])
或在更好的jQuery中,使用:$('.subtitle:eq('+i+')');
或$('.subtitle:nth-of-type('+i+1+')');
关于javascript - 根据条件jquery删除p标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37596981/