基于条件jquery删除p标记

时间:2016-06-02 16:08:31

标签: javascript jquery arrays loops conditional

我正在创建一个谷歌搜索应用程序以获得乐趣,我遇到了一个问题。

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

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

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

标签。

 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工作,但我不确定我做错了什么。谢谢

1 个答案:

答案 0 :(得分:1)

$('.subtitle')返回包含字幕类的所有元素的数组 这就是我们写的纯JavaScript中的原因:
document.getElementsByClassName('...');元素 s (pural)
$('#subtitle')等于:document.getElementById('...');元素(单数)
所以你需要做的就是指定你要从那个数组中删除哪个元素。

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