jQuery切换程序行为不符合预期
我有一个jQuery开关,我正在与之战斗。我可以让它一次切换多个div的可见性,但只要我实现next()函数,唯一可以切换的就是脚本的加减部分,而不是div的可见性。这段代码中有什么突出的地方吗 这可以工作,但可以切换所有div,而不仅仅是关闭一个div:jQuery切换程序行为不符合预期,jquery,toggle,Jquery,Toggle,我有一个jQuery开关,我正在与之战斗。我可以让它一次切换多个div的可见性,但只要我实现next()函数,唯一可以切换的就是脚本的加减部分,而不是div的可见性。这段代码中有什么突出的地方吗 这可以工作,但可以切换所有div,而不仅仅是关闭一个div: jQuery(function(){ jQuery(".toggleText").click(function(){ jQuery(".hiddenText").slideToggle("fast"); jQuery(t
jQuery(function(){
jQuery(".toggleText").click(function(){
jQuery(".hiddenText").slideToggle("fast");
jQuery(this).html(function(i,html) {
if (html.indexOf('More') != -1 ){
html = html.replace('More','Less');
} else {
html = html.replace('Less','More');
}
return html;
}).find('img').attr('src',function(i,src){
return (src.indexOf('plus.gif') != -1)? 'minus.gif' :'plus.gif';
});
});
});
这只会切换more+/less,而不会切换.hiddenText div。(这两种方法的唯一区别是在第三行中添加了next()
有什么想法吗
PS:我使用jQuery而不是$,因为这段代码和CMS存在冲突。从你的写作方式来看
jQuery(this).next(".hiddenText")
我猜您想在jQuery(this)
之后找到下一个.hiddentText
?这不是.next()
的工作方式。我不会找到下一个同级,但会通过可选选择器对其进行筛选
你可能需要
jQuery(this).parent().children(".hiddenText")
如果在jQuery(this)
的父级中只有一个.hiddentText
不要使用html()
/innerHTML
。它不是做你想做的事
执行此操作时,您要求浏览器将其当前文档模型序列化为HTML字符串。然后修改HTML并将其写回,此时浏览器必须销毁所有现有元素内容,并用从HTML字符串解析的新DOM节点替换它
除了速度慢且不可靠之外(因为您真的不知道浏览器将选择何种确切格式来序列化内容;它与您提供给它的原始HTML不同),这还必然会破坏DOM中无法转换为HTML标记字符串的所有信息。其中包括表单字段值、JavaScript引用和事件处理程序
因此,当您写回HTML时,您将丢失该标记中元素上的所有click
事件,包括打开/关闭箭头上的事件
忘记HTML字符串黑客。直接处理DOM元素,直接使用更多
/更少
文本内容更改每个元素的文本()
jQuery(this).parent().children(".hiddenText")
jQuery(this).html(function(i,html) {