在DOM操作之后绑定jQuery滑块

时间:2012-04-02 18:04:48

标签: javascript jquery jquery-ui slider

我正在使用jQuery UI中的一些滑块。当我将它们绑定在“静态”HTML div上时,它们工作正常,但是,我想将它们绑定在一些动态加载的div上。让我在一些示例代码中解释一下:

<script type="text/javascript"> 
function addThing(id)
{
    // retrieve some data from a json source
    $.getJSON('/get/thing/' + id + '/', function(jsondata) 
    {
        var newtd = '<td><div class="slider" id="sl'+id+'"></div></td>';
        $("#tbody_tr").append($(newtd));
    }

    // method 1    
    $( "#sl"+id ).slider();
    // method 2    
    $( ".slider" ).slider();
}

addThing(1);
</script>

除了滑块之外,这是有效的。 我似乎无法弄清楚这一点。请给我一些指示!

1 个答案:

答案 0 :(得分:1)

您需要在回调中而不是在函数中执行此操作。 $( "#sl"+id ).slider(); 在元素添加到页面之前发生。它是异步的,而不是同步的。

function addThing(id)
{
    // retrieve some data from a json source
    $.getJSON('/get/thing/' + id + '/', function(jsondata) 
    {
        var newtd = '<td><div class="slider" id="sl'+id+'"></div></td>';
        $("#tbody_tr").append($(newtd));
        $( "#sl"+id ).slider();
    }
}

addThing(1);