首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用相同链接的Jquery上下滑动元素不起作用

使用相同链接的Jquery上下滑动元素不起作用
EN

Stack Overflow用户
提问于 2012-07-09 01:39:50
回答 2查看 115关注 0票数 0

我有以下代码,它向下滑动,但不是向上滑动。请你帮我找出错误,如果有更好的方法,我尝试了slideToggle,但这并不能检查元素的状态,因为使用hide and show你可以检查$('#my_div').is(':hidden')

下面是我的代码:

代码语言:javascript
复制
$("a.advanced_search_toggle").click(function() { 
    if ($("#advanced_search_box").hasClass('closed')) {
        $("#advanced_search_box").slideDown(function(){
            $("a.advanced_search_toggle").text('Simple Search');
            $("a.advanced_search_toggle").removeClass('down_arrow');
            $("a.advanced_search_toggle").addClass('up_arrow')
            $("a.advanced_search_toggle").removeClass('closed');
            $("a.advanced_search_toggle").addClass('open'); 
        });
    } else {
        $("#advanced_search_box").slideUp(function(){
            $("a.advanced_search_toggle").text('Advanced Search');
            $("a.advanced_search_toggle").removeClass('up_arrow');
            $("a.advanced_search_toggle").addClass('down_arrow');
            $("a.advanced_search_toggle").removeClass('open');
            $("a.advanced_search_toggle").addClass('closed');                       
        });         
    }
    return false;
}); 

请注意,默认情况下,我添加了一个closed to #advanced_search_box

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-09 01:56:44

您正在尝试修改链接的属性,而不是元素的属性。此外,通过将对象分配给变量来cache您的对象,这有助于简化引用和优化。尝试以下操作:

代码语言:javascript
复制
$("a.advanced_search_toggle").click(function() {
    var link = $(this);
    var box = $("#advanced_search_box");
    if (box.hasClass('closed')) {
        box.slideDown(function(){
            link.text('Simple Search').removeClass('down_arrow').addClass('up_arrow');
            box.removeClass('closed').addClass('open');
        });
    } else {
        box.slideUp(function(){
            link.text('Advanced Search').removeClass('up_arrow').addClass('down_arrow');
            box.removeClass('open').addClass('closed');                    
        });         
    }
    return false;
});

演示:http://jsfiddle.net/m9XMn/

票数 0
EN

Stack Overflow用户

发布于 2012-07-09 01:47:20

您需要将.removeClass调用改为"#advanced_search_box“而不是"a.advanced_search_toggle”。它不会删除要检查的元素上的类名,因此不会向上滑动,只会向下滑动。

代码语言:javascript
复制
$("a.advanced_search_toggle").click(function() { 
    if ($("#advanced_search_box").hasClass('closed')) {
        $("#advanced_search_box").slideDown(function(){
            $("a.advanced_search_toggle").text('Simple Search');
            $("a.advanced_search_toggle").removeClass('down_arrow');
            $("a.advanced_search_toggle").addClass('up_arrow')
            $(this).removeClass('closed');
            $(this).addClass('open'); 
        });
    } else {
        $("#advanced_search_box").slideUp(function(){
            $("a.advanced_search_toggle").text('Advanced Search');
            $("a.advanced_search_toggle").removeClass('up_arrow');
            $("a.advanced_search_toggle").addClass('down_arrow');
            $(this).removeClass('open');
            $(this).addClass('closed');                       
        });         
    }
    return false;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11385216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档