2012-02-21 96 views
0

我正在编写一个JQuery移动应用程序。在这个应用程序中,我需要动态构建一个滑块列表。每当我构建我的列表时,只会呈现传统的HTML样式下拉列表。我想要呈现JQuery移动滑块。在试图动态地建立这个名单,我已经写了下面的:JQuery Mobile Slider将无法正确渲染

$.each(result.Results, function (i, r) { 
    var s = "<li><div data-role='fieldcontain'><label for='person" + i + "'>" + r.FullName + "</label>"; 
    s += "<select name='person" + i + "' id='person" + i + "' data-role='slider'>"; 
    s += "<option value='false' selected='selected'>No</option><option value='true'>Yes</option>"; 
    s += "</select></div></li>"; 

    $("#personList").append(s); 
    }); 
    $("#personList").listview("refresh"); 

    var sliders = $("#personList [data-role=slider]"); 
    for (var i = 0; i < sliders.length; i++) { 
    sliders[i].slider(); 
    } 

当执行代码时,我得到一个JavaScript错误,说:

遗漏的类型错误:对象#有没有方法'slider'

如果我不使用“滑块[i] .slider();”代码,传统的HTML下拉列表仍然呈现,而不是JQuery Mobile滑块。有人可以帮助确定我做错了什么吗?

谢谢!

回答

1

我认为你需要创建一个新的jQuery对象在使用这样的循环,当...

var sliders = $("#personList [data-role=slider]"); 
    for (var i = 0; i < sliders.length; i++) { 
    $(sliders[i]).slider(); 
    } 

See this post for more info(更具体地说是从SLaks答案)

当然,你可以得到通过不使用循环在所有反正...

$("#personList [data-role=slider]").slider(); 
+1

它总是小事:)。谢谢你,是的,缪斯岩石。 – 2012-02-21 14:49:48

0

其实,你不需要是for环statement.You可以拨打使用此语句的所有滑块上的方法;

$("#personList [data-role=slider]").slider();