0

平日のjquery UI「スライダー」を実装しようとしました:

<!-- Sliders -->
<span id="sliderList">
    <div id="slider-range-sunday" data-start="14" data-end="18"></div></br/>
    <div id="slider-range-monday" data-start="1" data-end="1"></div></br/>
    <div id="slider-range-tuesday" data-start="1" data-end="1"></div></br/>
    <div id="slider-range-wednesday" data-start="1" data-end="1"></div></br/>
    <div id="slider-range-thursday" data-start="1" data-end="1"></div></br/>
    <div id="slider-range-friday" data-start="1" data-end="1"></div></br/>
    <div id="slider-range-saturday" data-start="1" data-end="1"></div>
</span>


<script type="text/javascript">
    $("#sliderList > div ").slider({
        range: true,
        min: 0,
        max: 24,
        values: [ parseInt($(this).attr("data-start")) , parseInt($(this).attr("data-end"))]
    });
</script>

デフォルト値はdivの「data-start」と「data-end」に含まれていますが、次のようにアクセスすることはできません:

$(this).attr("data-start")

以下のエラーが発生しました(chromeでデバッグ)

Uncaught TypeError: Cannot call method 'addClass' of undefined 
jquery.ui.slider.js?body=1:204

誰もが理由を知っていますか?ありがとうございました

- - 編集

Itay の助けを借りて、以下のコードで動作するようになりました。

$("#sliderList > div ").each(function(index){
    $(this).slider({
         range: true,
         min: 0,
         max: 24,
         values: [ parseInt($(this).attr("data-start")) , parseInt($(this).attr("data-end"))],
         slide: slideTime
     });
});
4

1 に答える 1

1

コメントに関する議論を要約するには、次のコードを使用します (アイデアは私のものでしたが、文章はすべてあなたのものでした。これは素晴らしいことです!):

$("#sliderList > div ").each(function(){
    $(this).slider({
         range: true,
         min: 0,
         max: 24,
         values: [ parseInt($(this).attr("data-start")),
                   parseInt($(this).attr("data-end"))],
         slide: slideTime
     });
});
于 2013-09-15T09:59:51.467 に答える