【问题标题】:Dynamically adding <li/> to <ul/> in jquery mobile在jquery mobile中动态添加<li/>到<ul/>
【发布时间】:2011-08-21 00:20:39
【问题描述】:

我正在尝试将列表项添加到 jquery mobile 中的无序列表中,但格式似乎没有正确创建。

<ul data-role="listview" data-theme="c" data-dividertheme="b">
                    <li data-role="list-divider">
                        Title Divider
                    </li>
                    <li>
                        <a href="test.html" data-transition="slide">List item 1</a>
                    </li>

 </ul>

脚本:

$('ul').append('<li><a>hello</a></li>');

由于某种原因,动态生成的 li 与静态创建的显示方式不同。有谁知道为什么以及如何使它相同?

【问题讨论】:

    标签: jquery html jquery-mobile


    【解决方案1】:

    试试这个:

    $('ul').append($('<li/>', {    //here appending `<li>`
        'data-role': "list-divider"
    }).append($('<a/>', {    //here appending `<a>` into `<li>`
        'href': 'test.html',
        'data-transition': 'slide',
        'text': 'hello'
    })));
    
    $('ul').listview('refresh');
    

    【讨论】:

    • @cfarm54 请检查一下,我认为它可能有效。如果没有,请评论我。
    • no 不起作用。我不认为你可以将它附加到 jquery-mobile 框架中。你试过使用图书馆吗? jquerymobile.com
    • @cfarm54 在附加&lt;li&gt; 之后,您需要调用$('ul').listview('refresh') 进行刷新。试试这个,如果不是请评论我。
    • 这段代码很慢,很复杂,而且答案不包含解决方案——评论有。
    • @naugtur 嗨,朋友,对您的评论表示应有的尊重,我想评论您,我首先给出了解决方案,它唤醒了 cfarm54,尽管它通过评论最终确定。那你为什么不投票给我呢?
    【解决方案2】:

    提供的答案结果有点混乱......

    $('ul').append('&lt;li&gt;&lt;a&gt;hello&lt;/a&gt;&lt;/li&gt;'); 可以,但是需要刷新listview,所以你只需要:

    $('ul').append('<li><a>hello</a></li>').listview('refresh');
    

    【讨论】:

    • 如果 OP 是 @cfarm54 而我是 @naugtur,我该如何回答我自己的问题?
    • @EJP - 即使他确实回答了自己的问题,这也是在 stackexchange 上鼓励的做法,他不应该因此受到责备。
    • 我不知道回答你自己的问题是不好的。事实上,我认为有一个徽章。
    • @AnthonyTopper 是的,鼓励您在自己找到答案时回答自己的问题。这是一种分享知识的方式。有些人认为其中有恶意,因为您在问题和答案中都获得了声誉积分。有些人将获得代表视为实际金钱或其他东西。无论如何,EJP 的建议是完全不正确的。您永远不应该仅仅因为您自己提出问题而将问题的答案发布为 cmets。如果您需要更多信息,请查看meta.stackexchange.com/questions/12513/… 和那里的链接
    【解决方案3】:

    如果你想改变 UL 的属性,你可能需要为封闭的 div 调用 .trigger('create')。这可确保在重置属性的情况下再次创建 UL。

    【讨论】:

    • 这也是正确的,但更通用 - 您可以使用它刷新文档的任何部分。并且有很多关于 SO 的问题:)
    【解决方案4】:

    您的 标记未引用网页。

    尝试:

    $('ul').append('
  • List Item 2
  • ');

    【讨论】:

    • +1 省略 href 属性会更改链接的样式。
    • @Cyber​​ Sleuth Omega:很好的尝试,但这不是有效的 HTML。没有开场
    • ,也没有闭场。 @cfarm54 修复这些,它应该可以工作。
  • @naugtur:根据您的解决方案答案,“没关系”。下定决心
  • .listview('refresh') 是一个答案。 OP 已经添加了一些 html。属性不会改变任何东西
  • 【解决方案5】:

    你必须在列表标签​​中添加一个类

    $('<ul>').append( $('<li>').attr('class','ui-li ui-li-static ui-btn-up-c ui-li-last').append('hello'))  ;
    

    JQuery mobile 会自动将一个类添加到列表项中,如果您在 firefox 中运行您的页面并使用 firebug 对其进行调试,就可以看到该类。选择已应用的任何类并将其添加到动态生成的 li 标记中。

    【讨论】:

    • 这不是一个好的做法。当新版本发布并添加其他类时会发生什么?你的来源将被打破。更好的解决方案是始终使用所用框架的 api,在这种情况下,使用 jquerymobile api。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签