Jquery 让Div滑出并单击返回

Jquery 让Div滑出并单击返回,jquery,show-hide,sliding,Jquery,Show Hide,Sliding,我有一个销售信息侧边栏,我想在点击时滑出并返回。现在它将滑出,但一旦我单击它一次,它就不会滑回。如果有人能找出为什么代码不能工作,那就太好了 此外,我希望div在悬停时稍微向左移动,但仅当它一直向左移动时。我这样做是为了让它更引人注目,它可以被点击 以下是html: <div id="sidebar"> <div id="sales"> <div id="salesbar"> <img id="sales_img" src="/i

我有一个销售信息侧边栏,我想在点击时滑出并返回。现在它将滑出,但一旦我单击它一次,它就不会滑回。如果有人能找出为什么代码不能工作,那就太好了

此外,我希望div在悬停时稍微向左移动,但仅当它一直向左移动时。我这样做是为了让它更引人注目,它可以被点击

以下是html:

<div id="sidebar">
<div id="sales">
    <div id="salesbar">
        <img id="sales_img" src="/images/sales.png"/>
            <h3>Contact Sales</h3>
            <p>
                For more information 
                please email us or call:
            </p>
        </div>    
    </div>
</div>
总而言之,我想点击一下销售栏,让它弹出并停留在那里。然后,当您再次单击它时,返回到它开始的位置。如果可能的话,如果你将鼠标悬停在5px以上,然后在离开的时候返回,那就太好了

下面是带有css的JSFIDLE:


《高级》中的“谢谢”

不完全确定这是否是您想要的效果,但看看这是否有帮助

    $(document).ready(function () {
    var sales = $('#sales', '#sidebar'),
        image = $('#sales_img', '#salesbar'),
        rt = sales.css('right');
    image.click(function (event) {
        if (rt == '0px' || rt == '5px') {
            sales.animate({
                'right': '235px'
            }, 600);
        } else {
            sales.animate({
                'right': '0px'
            }, 600);
        }
        event.preventDefault();
    });
    image.hover(function () {
        if (sales.css('right') == '0px') {
            sales.css('right', '5px');
        }
    });
    $('#sales').mouseleave(function () {
        var pos = sales.css('right').substr(0, sales.css('right').length - 2);
        if (pos > 5) sales.animate({
            'right': '0px'
        }, 600);
    });
});
小提琴:

让它起作用了。感谢@Baps的悬停和@dragonslovetacos的点击功能

以下是我的观点:

$(document).ready(function() {
        var sales = $('#sales', '#sidebar'),
            image = $('#sales_img', '#salesbar'),
            rt = sales.css('right');


  image.click(function() {
    var $marginLefty = $('#sales');
    $marginLefty.animate({
      right: parseInt($marginLefty.css('right'),10) === 5 ?
        $marginLefty.outerWidth()-image.outerWidth(true) :
        0
    });
  });

image.hover(
    function () {
    if (sales.css('right') == '0px') {
        sales.css('right', '5px');
    }
    }, function() {
    if(sales.css('right') == '5px') {
        sales.css('right','0px');
        }
    }
    );        
});

@dragonslovetacos这是一个正确的想法,但我仍然想要一些前后显示的内容。另外,我希望动作发生在元素本身上。@dragonslovetacos经过一段时间的混乱之后,这个链接起了一点作用。我只是没能得到我用来帮忙的悬停。太棒了。我知道这并不完全是你想要做的,但我想这可能会帮助你摆脱困境。非常感谢。我没有使用你的点击功能,但是有条件的鼠标悬停效果很好。因为hover函数有两个参数,所以我在第二个参数中添加了另一个when mouseleave条件。
$(document).ready(function() {
        var sales = $('#sales', '#sidebar'),
            image = $('#sales_img', '#salesbar'),
            rt = sales.css('right');


  image.click(function() {
    var $marginLefty = $('#sales');
    $marginLefty.animate({
      right: parseInt($marginLefty.css('right'),10) === 5 ?
        $marginLefty.outerWidth()-image.outerWidth(true) :
        0
    });
  });

image.hover(
    function () {
    if (sales.css('right') == '0px') {
        sales.css('right', '5px');
    }
    }, function() {
    if(sales.css('right') == '5px') {
        sales.css('right','0px');
        }
    }
    );        
});