0

我想根据滑块值更改滑块 div 内元素的背景图像。这些图像位于 Eclipse 的资源文件夹中...

我有一个名为的 CSS 类character,在该类中我有一个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>

有谁看到我做错了什么?

4

1 回答 1

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 div。

这是我更改背景颜色而不是图像的示例

于 2013-03-05T21:47:36.810 回答