我的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匹配时,它不适用于该情况。
答案 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>