jquery - 单击时切换背景位置

标签 jquery toggle background-position

我正在努力实现这个Is there an easy way to toggle background position between two states on click event?

我已经构建了一个应该工作的函数..不知道为什么它不起作用。我花了几个小时试图在项目中如此乏味的部分实现这一目标,但这是必要的。

请看一下这个函数:

$("#secondarrow").click(function(){
    /*$(".arrows").toggle( 
    function(){ 
        $(this).css({"background-position":"0px 0px"}); 
    },  
    function(){ 
        $(this).css({"background-position":"0px -30px"}); 
    });*/
    /*$(".arrows").toggleClass(function() {
    if ($(this).is(".arrows")) {
    return ".arrowsup";
    } else {
    return ".arrows";
    }
    });*/
    $('#secondarrow').toggle(function() { 
    $("#arrow2").css('backgroundPosition', '0px -15px'); 
    }, function() { 
    $("#arrow2").css('backgroundPosition', '0px 0px'); 
    });
$("#ukmore").slideToggle(100);
$("#clause").slideToggle(100);
});

它应该做的是,单击 div 名称第二个箭头时,它会显示许多子类别,并同时切换 ID 为 #arrow2 的 div 子项的背景位置从向下的箭头(表示单击以显示更多内容)到作为同一背景图像一部分的向上箭头(表示单击以隐藏子类别>).

我尝试了许多不同的功能结构,但没有一个能够按要求工作,最新的一个 - 没有注释掉的一个 - 确实改变了背景位置以显示向上的箭头,但它只是这样做第一次单击时,并且仅在直接单击 #arrow1 div 时才执行此操作,当我需要它在单击 #secondarrow div 时来回切换时。

请帮忙。

最佳答案

首先 - 您需要多练习处理事件。

.toggle也是一个事件处理程序,因此您基本上添加一个新的单击处理程序,用于在单击该项目时进行切换。

你只需要做这样的事情:

$("#secondarrow").toggle(function() { 
    $("#arrow2").css('backgroundPosition', '0px -15px');
    //do more stuff on first click
    }, function() { 
    $("#arrow2").css('backgroundPosition', '0px 0px'); 
    //do more stuff on second click
    });

我无法检查上述内容是否适合您。我建议也将您的代码放入 jsFiddle 中以解决 stackoverflow 问题。

第二件事

最好创建一个具有第二个位置的 css 类,然后绑定(bind)一个单击事件来切换该类:

$("#secondarrow").click(function(){
   $("#arrow2").toggleClass('position2');
})

还有一个提示:

使用 firebug 或 chrome 开发者工具来调试代码。您可以检查您的选择器是否正确。 另外,请阅读有关选择器缓存的信息,例如。 $element=$('.something'); $element.show()

关于jquery - 单击时切换背景位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625508/

相关文章:

background-image - CSS 背景 : set position then do a shift?

jquery - 单击一个元素会触发单击另一个元素 [JQuery]

javascript - jQuery jCapSlide 实现 - 具有相同属性的多个元素,如何做一个 Javascript 数组?

javascript - 从切换列表中获取值

javascript - 删除切换类

javascript - 使用 jQuery Toggle 更改 div 文本

css - android 中的背景位置不显示

jquery - 在文本框焦点上显示框,包装文本框

javascript - 如何将div放在其他div的后面

html - 背景位置在手机上显示不正确