【问题标题】:making a list in jquery mobile using innerhtml使用innerhtml在jquery mobile中制作列表
【发布时间】:2011-12-07 20:35:50
【问题描述】:

我正在尝试使用 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;
}

【问题讨论】:

    标签: javascript html list jquery-mobile


    【解决方案1】:

    您需要确保 JQuery Mobile 在使用 javascript 创建列表后对其进行初始化。使用以下 sn-p 其中 thislist 是无序列表元素的 id。

    $('#thislist').listview()
    

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

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

    【讨论】:

      【解决方案2】:

      我没有将解决方案归功于该解决方案,而是尝试详细解释它,因为我花了一些时间才弄清楚,但更改应该是这样的。

      原始代码:

      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 的列表视图显示您的列表。

      【讨论】:

        【解决方案3】:

        您没有使用与 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>
        

        【讨论】:

        • 我可以使用我提出的完全相同的脚本在 HTML 页面上创建列表。当我尝试从 javascript 制作它时,它只是失败了
        • 我应该调用哪个插件以及我应该如何以及在哪里调用它? (我对网络开发很陌生)
        • 在设置该 innerHTML 之后。 $('#searchList').listview();
        • 嗯...尝试向
            元素添加一个 id 并在其上调用插件。
        猜你喜欢
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多