javascript - 基于条件jquery删除p标签

标签 javascript jquery arrays loops conditional-statements

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

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

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

标记。然而,正在发生的事情是它删除了所有具有该类名的

标签。

 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') 返回具有 subtitle 类的所有元素的数组。
这就是为什么我们在纯 JavaScript 中编写:
document.getElementsByClassName('...'); 元素s(pural)
虽然 $('#subtitle') 等于:
document.getElementById('...'); Element (单数)
因此,您需要做的就是指定要从该数组中删除哪个元素。

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

关于javascript - 基于条件jquery删除p标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596981/

相关文章:

javascript - 动画改变字宽

c++ - 动态和经典多维数组的速度差异

javascript - 动态复制两个字段的输入并将其粘贴到第三个字段?

javascript - 关于如何使用 IntelliJ 调试器运行 Glassfish Server 的细节?

javascript - JSLint 意外 'that' 消息

jquery - 修改 Jquery 以重置浏览器窗口大小

javascript - 导航另一个页面时如何继续全屏模式?

c++ - 数组作为指针传递的不明确重载

java - 从 ArrayList 中捕获重复项

javascript - 在表单按钮 css 中的文本旁边添加图像