使用innerhtml在jquery mobile中创建一个列表

时间:2011-12-07 20:35:50

标签: javascript html5 list jquery-mobile

我正在尝试使用jquery mobile提供的样式创建一个列表。当我在html文件中创建列表时,该列表包含了jquery mobile提供的样式:http://jquerymobile.com/demos/1.0/docs/lists/lists-search.html

但是在我的网站中,我需要根据数组中的对象数生成列表,所以我想通过使用javascript创建html脚本并更改div的innerHTML来实现这一点。当我这样做时,会出现一个没有jquery mobile样式的正常列表。

有没有人能解决我的问题?

这是我的标记代码:

function GenerateList(appArray) {
    var searchList = document.getElementById('searchList');
    var app;
    var htmlString = "<ul data-role='listview' data-filter='true' data-filter- placeholder='Search...' data-filter-theme='a' data-theme='a'>";

    for(i=0; i<appArray.length;i++) {
        app = appArray[i];
        htmlString = htmlString + "<li><a id=App" + (i+1).toString() + " onclick='AppSelected(id);'>";
        htmlString = htmlString + "<img src='DummyImages/" + app[1] + "' alt='Logo' class='ListAppLogo'>";
        htmlString = htmlString + "<h3>"+ app[2] + "</h3>";
        htmlString = htmlString + "<p>" + app[4] + ".0/5.0</p>";
        htmlString = htmlString + "<input type='hidden'>" + app[0] + "</a></li>";
    }

    htmlString = htmlString + "</ul>";
    searchList.innerHTML = htmlString;
}

3 个答案:

答案 0 :(得分:2)

您需要确保在使用javascript创建列表后,JQuery Mobile会初始化列表。使用以下代码段,其中thislist是无序列表元素的id。

$('#thislist').listview()

此外,如果已存在data-role ='listview'的无序列表,那么您将需要使用带有参数'refresh'的相同初始值设定项。这是另一个片段,其中thislist是无序列表的id。如果您已动态添加/删除项目,则需要使用刷新。

$('#thislist').listview('refresh');

答案 1 :(得分:1)

我并不赞成这个解决方案,而是试图详细解释它,因为我花了一些时间才弄明白,但改变应该是这样的。

原始代码:

function GenerateList(appArray) {
var searchList = document.getElementById('searchList');
var app;
var htmlString = "<ul data-role='listview' data-filter='true' data-filter- placeholder='Search...' data-filter-theme='a' data-theme='a'>";

...

searchList.innerHTML = htmlString;
}

固定代码:

function GenerateList(appArray) {
var searchList = document.getElementById('searchList');
var app;
var htmlString = "<ul id='thislist' data-role='listview' data-filter='true' data-filter- placeholder='Search...' data-filter-theme='a' data-theme='a'>";

...

searchList.innerHTML = htmlString;
$('#thislist').listview();
}

这样它就可以使用jquery mobile的listview显示你的列表。

答案 2 :(得分:0)

你没有使用与jQuery Mobile相同的CSS。如果您查看您提供的链接上的HTML,您会看到他们的列表项上有其他类:

<ul data-role="listview" data-filter="true" class="ui-listview">
  <li data-theme="c" class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-c">
    <div class="ui-btn-inner ui-li" aria-hidden="true">
      <div class="ui-btn-text"><a href="index.html" class="ui-link-inherit">Acura</a></div>
      <span class="ui-icon ui-icon-arrow-r ui-icon-shadow"></span>
    </div>
  </li>
</ul>