Javascript $(这)指的是$(窗口),而不是内部单击的元素。click()方法
我试图访问无序列表中的子元素,但没有得到预期的值 以下是我的HTML代码:Javascript $(这)指的是$(窗口),而不是内部单击的元素。click()方法,javascript,jquery,Javascript,Jquery,我试图访问无序列表中的子元素,但没有得到预期的值 以下是我的HTML代码: s M T W T F s JS代码: $(文档).ready(()=>{ //选中相应复选框时使标签处于活动状态 $(“#工作日列表标签”)。单击((事件)=>{ event.stopPropagation(); log($(this)); log($('weekdayList li:nth child(2)label'); $(this.toggleClass('active');
-
s
-
M
-
T
-
W
-
T
-
F
-
s
JS代码:
$(文档).ready(()=>{
//选中相应复选框时使标签处于活动状态
$(“#工作日列表标签”)。单击((事件)=>{
event.stopPropagation();
log($(this));
log($('weekdayList li:nth child(2)label');
$(this.toggleClass('active');
});
});
代码笔在这里:
例如,当我单击'M'标签
时,我期望得到console.log($(this))的输出
与console.log相同($('#weekdayList li:nth child(2)label')代码>
与此相反:
Object{0:label,长度:1,prevObject:Object(1)}
我明白了:
对象[窗口]
我做错什么了吗?非常感谢您的帮助。您使用的是箭头功能,因此,$(此)不正确。
而不是
$('#weekdayList label').click((event) => {
});
请使用这个:
$('#weekdayList label').click(function (event) {
// You can use $(this) here
});
$(文档).ready(()=>{
//选中相应复选框时使标签处于活动状态
/*$(“#工作日列表li”)。单击(函数(事件){
event.stopPropagation();
log($(this));
log($('weekdayList li:nth child(2)label');
$(this.toggleClass('active');
})*/
$('#weekdayList li')。单击((事件)=>{
event.stopPropagation();
log($(event.currentTarget));
log($('weekdayList li:nth child(2)label');
$(event.currentTarget).toggleClass('active');
});
});
您是否尝试在document.ready外部创建click event函数?是的,它没有更改任何内容。这是因为此
箭头函数内部处于其更高范围的上下文中。这不会更改任何内容。即使我在$(document).ready()中更改了函数代码>,输出相同,标签不改变颜色。这实际上有所帮助,但我的单击功能被调用了两次。这就是为什么我之前认为这个改变没有帮助。有什么想法吗?@MattMcCarthy您看到什么表明click事件被触发了两次?在代码示例中,输出增加了一倍,但不是我的原始代码。在我的示例中,我的目标是#weekdayList li
,但当我将其更改回时,它只触发一次。问题解决了。谢谢大家!