我试图从同一函数中给出一个类的元素中获取信息,但找不到该类:
HTML:
<style>
.class-b { background: red; }
</style>
<div class="class-a">Hello!</div>
<div class="class-a">Hola!</div>
<div class="class-a">Bonjour!</div>
<button class="clicker">Click</button>
JS / jQuery的:
var $b = $(".class-b");
$(".clicker").click(function() {
$(".class-a:first").addClass("class-b");
console.log($b.html());
});
当我在Hello!
中获得console.log
时,这不会返回任何内容。所以我想,也许函数还没有完成,类没有渲染,因此无法找到。所以我从函数中删除了日志记录并将其插入回调:
var $b = $(".class-b");
function c_log() {
console.log($b.html());
}
$(".clicker").click(function() {
$(".class-a:first").addClass("class-b");
c_log();
});
但仍然没有任何回报。我是否忽略了DOM的某些内容?
答案 0 :(得分:4)
您的$b
是当时类名为“.class-b”的所有元素。仅仅因为你给了一个新元素,类名“.class-b”并不意味着$b
将被更新。
只需重置$b
...
$(".clicker").click(function() {
$(".class-a:first").addClass("class-b");
$b = $('.class-b');
console.log($b.html());
});
答案 1 :(得分:2)
在$b
被赋予类.class-a:first
之前定义.class-b
是错误的,因此$b.html()
未定义,因为.class-b
没有元素}。添加课程时需要重新定义$b
:
var $b = $(".class-b");
function c_log() {
console.log($b.html());
}
$(".clicker").click(function() {
$(".class-a:first").addClass("class-b");
$b = $(".class-b");
c_log();
});
答案 2 :(得分:2)
当你写完:
var $b = $(".class-b");
它确实将当前 b
放入$b
变量中。在您的代码中稍后使用$b
时,它不会追溯检查新增内容。将上面一行放在click
回调中,每次都会重新检查一次,然后你就变成了金色。