2013-03-05 66 views
0

我想根据滑块值更改滑块div内元素的背景图像。这些图像在日食的资源文件夹中...更改基于jQuery UI滑块的图像

我有一个名为character的CSS类,在那个类中我有一个background-image规则,我想在滑块值更改时更改该规则。

当前当我滑动滑块时,所有character元素的背景图像都会改变。这不是我想要的行为。我希望每个character元素的背景图像仅在其换行滑块更改时才会更改。

这是我到目前为止的代码:

<script> 
    $(function() { 
     $(".<%=i%>").slider({ 
      disabled:false, 
      animate:"slow", 
      range: "min", 
      value:6, 
      min: 0, 
      max: 10, 
      step: 1, 
      slide: function(event, ui) { 
       $("#<%=i%>").val( ui.value); 
       $("#hidden<%=i%>").val(ui.value); 
      } 
     }); 
     $("#<%=i%>").val( $(".<%=i%>").slider("value")); 
     $("#hidden<%=i%>").val( $(".<%=i%>").slider("value")); 
    }); 
</script> 
<script> 
    if($("#hidden<%=i%>").val(ui.value)==6) 
    {  
     $('.character', this).css("background-image", "url(../images/characters/1.png)"); 
    } 
</script> 

有谁看到我做错了吗?

+1

它有什么问题? – MiniRagnarok 2013-03-05 19:30:08

+0

首先图像没有改变,其次如果我改变图像的类,那么图像关联到每一个滑块将改变 – user2137186 2013-03-05 19:59:52

+0

我想改变图像的滑块,其值被改变 – user2137186 2013-03-05 20:10:15

回答

0

问题是你的代码改变背景是在错误的地方和语法错误。

你需要在一个事件绑定到一个元素的触发器。现在在您的脚本中,当您尝试更改背景图像时,它正在查看文档。因此this作为上下文是文档和所有character元素将被选中。

,如果你这样做,而不是:

$(".<%=i%>").slider({ 
    disabled: false, 
    animate: "slow", 
    range: "min", 
    value: 6, 
    min: 0, 
    max: 10, 
    step: 1, 
    slide: function (event, ui) { 
     $("#<%=i%>").val(ui.value); 
     $("#hidden<%=i%>").val(ui.value); 
    }, 
    change: function(event, ui){ 
     if(ui.value == 6){ 
      $('.character', this).css("background-image", "url(../images/characters/1.png)"); 
     }else{ 
      $('.character', this).css("background-image", "{some other/default image}"); 
     } 
    } 
}); 

然后this上下文实际上是sllider股利。

Here is an example where I changed the background color instead of an image

+0

谢谢你的答案太多了......现在它正在检测哪个滑块值正在改变,并且它正在进入if部分,但在我的代码中不改变颜色或图像可能的原因是什么? – user2137186 2013-03-05 22:09:14

+0

我只是在猜测你的html,但你的'character'元素在DOM树中居住在哪里?它们是否包含在滑块div中?或者他们在他们之外? – 2013-03-06 14:09:15