"$(".detail").live("click",function(){
var index = $(this).attr("index");
$(".details[rel='"+index+"']").toggle(function(){
$(".detail").html("收起详情");
},function(){
$(".detail").html("查看详情");
});
});
toggle回调函数无效 求解答
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这段代码使用了jQuery的.live()
和.toggle()
方法,但需要注意的是,从jQuery 1.9版本开始,.live()
方法已经被废弃,建议使用.on()
方法来替代。至于.toggle()
方法在 jQuery 1.8之后的行为也发生了改变,它不再接受动画函数作为参数,而仅仅用于切换元素的可见性。
根据你的需求,看起来是想在点击".detail"元素时,切换显示或隐藏与之关联的".details"元素,并且同时改变".detail"元素内的文本。这里是一个修改后的示例代码,使用了.on()
方法并调整了.toggle()
的用法:
$(document).on("click", ".detail", function() {
var index = $(this).attr("index");
var $details = $(".details[rel='" + index + "']");
var detailText = $details.is(":visible") ? "收起详情" : "查看详情";
// 切换details的显示状态
$details.toggle();
// 更新detail元素的文本
$(this).html(detailText);
});
这段代码首先通过.on()
方法为".detail"类绑定点击事件处理函数,这能够处理动态添加的元素。接着,根据.details
元素的当前可见性来决定显示"收起详情"还是"查看详情",并相应地切换.details
元素的显示状态。这样应该能解决你的问题。