2013-03-05 67 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