如何从jquery select中调用返回值的hide

时间:2017-05-26 09:06:21

标签: javascript jquery

我的DOM结构如下:

  <div class="weather-Dashboard"></div>
    Dashboard
    <div class="weather-Charts">
      charts
    </div>
    <div class="weather-Statistics">
      Statistics
    </div>
    <div class="weather-Sites">
      Sites
    </div>

我想选择每个div dom哪个类包含weather并使用jQuery隐藏它们。以下是我的JS代码:

var e = $('div[class *= "weather"]');
e.each(function() {
  console.log(this);
  this.hide();
});

运行此代码后,我得到以下错误:

  

未捕获的TypeError:this.hide不是函数

似乎this不是jQuery对象。我的代码出了什么问题?我试过如果只有一个DOM匹配查询,我可以调用e.hide()来隐藏dom。但是,当存在多个DOM匹配时,它不适用于该情况。

3 个答案:

答案 0 :(得分:5)

问题是因为Set<Character> subset = sub.chars().mapToObj(c -> ((char) c)).collect(Collectors.toSet()); for (int i = 0; i < string.length() && !subset.isEmpty(); i++) { subset.remove(string.charAt(i)); } ok = subset.isEmpty(); 引用了没有this方法的DOMElement。您需要首先将hide()包装在jQuery对象中:

this

但是,您应该注意,此处不需要var e = $('div[class*="weather"]'); e.each(function() { $(this).hide(); }); 循环 - 您可以直接在集合上调用each()

hide()

答案 1 :(得分:1)

each()方法this内部引用DOM对象,hide()是jQuery方法,因此您需要将其转换为jQuery对象。

$(this).hide();

或者只是更新display样式属性。

this.style.display = 'none';

答案 2 :(得分:1)

var e = $('div[class *= "weather"]');
e.each(function() {
  $(this).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="weather-Dashboard"></div>
      Dashboard
  <div class="weather-Charts">
    charts
  </div>
  <div class="weather-Statistics">
    Statistics
  </div>
  <div class="weather-Sites">
    Sites
  </div>