Jquery 在单击之间切换

Jquery 在单击之间切换,jquery,Jquery,学习JQuery 我从“学习JQuery”一书中获得了以下HTML标记: $(文档).ready(函数(){ $('div#f-author')。单击(函数(){ if($(this).hasClass('boldFont')){ $(this).replace为(“”+$(this).text()+“”); }否则{ $(this.wrapInner(“”).addClass('boldFont'); } }); }); 平地:多维度的浪漫 埃德温·阿伯特 第1部第3条 关于平地居民 摘录

学习JQuery

我从“学习JQuery”一书中获得了以下HTML标记:

$(文档).ready(函数(){
$('div#f-author')。单击(函数(){
if($(this).hasClass('boldFont')){
$(this).replace为(“”+$(this).text()+“”);
}否则{
$(this.wrapInner(“”).addClass('boldFont');
}
});
});

平地:多维度的浪漫
埃德温·阿伯特
第1部第3条
关于平地居民
摘录

只需检查JQuery中的
font-weight
属性,并相应地进行设置

$(文档).ready(函数(){
$('div#f-author')。单击(函数(){
fontWeight=$(this.css('font-weight'))
如果(fontWeight=='bold'){
$(this.css)({
“字体大小”:“正常”
});
}否则{
$(this.css)({
“字体大小”:“粗体”
});
}
});
});

平地:多维度的浪漫
埃德温·阿伯特
第1部第3条
关于平地居民
摘录

您想知道发生这种情况的原因,请看以下内容:


您可以将一个事件(在本例中是单击事件)绑定到id为f-author的div。但是,当您第二次单击时,您将调用一个名为
replaceWith()
的方法,该方法完全按照它所说的执行。它将用新的元素替换该元素。即使替换的元素相同(相同的标记、相同的id等),jQuery也无法识别这种相似性。调用
replaceWith()
时,基本上删除了绑定到此元素的所有事件。要获得事件授权的良好解决方案,请阅读Carsten Løvbo Andersen的评论

try
$(文档)
尝试
toggleClass
而不是替换元素。我怀疑,由于您正在替换已绑定click事件的元素,因此事件未绑定到新元素(或者正如Carsten建议使用动态事件处理程序)无法更改css文件。必须仅使用jQueryTanks@CarstenLøvboAndersen。明白了。