Javascript-单击更改DIV背景

Javascript-单击更改DIV背景,javascript,jquery,Javascript,Jquery,我使用JQuery在单击箭头时展开和收缩DIV。箭头应指向上/下,具体取决于DIV是否已展开 我试过这个,但似乎不起作用。该箭头保持为默认的向下箭头。滑动/向下工作正常,但图像不变。有人能解释为什么吗 function toggle_visibility(id) { $e = $("#" + id); $arrow = $("#arrow" + id); if ($e.is(':visible'))

我使用JQuery在单击箭头时展开和收缩DIV。箭头应指向上/下,具体取决于DIV是否已展开

我试过这个,但似乎不起作用。该箭头保持为默认的向下箭头。滑动/向下工作正常,但图像不变。有人能解释为什么吗

         function toggle_visibility(id) {
             $e = $("#" + id);
             $arrow = $("#arrow" + id);

             if ($e.is(':visible')){
                 $e.slideUp("slow");
                 $arrow.css('background-image', 'url(../images/downarrow.png)');
             }else{
                $e.slideDown("slow");
                 $arrow.css('background-image', 'url(../images/uparrow.png)');
             }
         }

你的这个syntex是错的

$(e).css('background-image', 'url(../images/downarrow.png)');
换成这个

$e.css('background-image', 'url(../images/downarrow.png)');

你的这个syntex是错的

$(e).css('background-image', 'url(../images/downarrow.png)');
换成这个

$e.css('background-image', 'url(../images/downarrow.png)');
$(e).css(…)
应该是
$e.css(…)
$(e).css(…)
应该是
$e.css(…)
这应该可以:

function toggle_visibility(id) {
         $e = $("#"+id);

         if ($e.is(':visible')){
             $e.slideUp("slow");
             $e.css('background-image', 'url(../images/downarrow.png)');
         }else{
            $e.slideDown("slow");
             $e.css('background-image', 'url(../images/uparrow.png)');
         }
     }
这应该起作用:

function toggle_visibility(id) {
         $e = $("#"+id);

         if ($e.is(':visible')){
             $e.slideUp("slow");
             $e.css('background-image', 'url(../images/downarrow.png)');
         }else{
            $e.slideDown("slow");
             $e.css('background-image', 'url(../images/uparrow.png)');
         }
     }
这样试试

var $e = $("#"+id)
这样试试

var $e = $("#"+id)
工作区:

工作区:


通过jQuery中的css('attributename','attributevalue')函数设置任何值都会将该属性添加到元素的内联样式中。在inspector中,它通常标记为element.style


除了要发布的答案外,我希望您仅通过类执行此操作,然后您可以使用中的备用背景图像创建一个单独的类,并通过在元素中添加/删除类来切换类,这不会显示在element.style中,相反,它只是切换类,而该类将显示在检查器中。

通过jQuery中的css('attributename','attributevalue')函数设置任何值都会将该属性添加到元素的内联样式中。在inspector中,它通常标记为element.style


除了要发布的答案外,我希望您仅通过类执行此操作,然后您可以使用中的备用背景图像创建一个单独的类,并通过在元素中添加/删除类来切换类,这不会显示在element.style中,相反,它只是切换类,而这将显示在检查器中。

无需
var$e=$(document.getElementById(id))只需使用var$e=$(“#”+id);首先,
$e=$(“#”+id)谢谢,刚刚复制了我找到的一些代码。不太熟悉JS
$(e)
?也许
$e
您可能将错误的元素作为背景不需要
var$e=$(document.getElementById(id))只需使用var$e=$(“#”+id);首先,
$e=$(“#”+id)谢谢,刚刚复制了我找到的一些代码。不太熟悉JS
$(e)
?也许
$e
您可能将错误元素作为背景My bad没有看到拼写错误My bad没有看到拼写错误这并不能提供问题的答案。若要批评或要求作者澄清,请在其帖子下方留下评论。@n1ckolas这不是批评,而是指出错误之处。这并不能提供问题的答案。若要批评或要求作者澄清,请在其帖子下方留下评论。@n1ckolas这不是批评,而是指出错误所在。我意识到我在箭头divs上没有ID。我添加了id=“arrow1”等,但仍然没有成功。我在箭头上添加了id,而且图像路径不需要“./”,因此我删除了它,它起了作用。我意识到我在箭头div上没有id。我添加了id=“arrow1”等,但仍然没有成功。我在箭头中添加了id,并且图像路径不需要“./”所以我删除了它,它成功了。