通过javascript代码以编程方式添加按钮后,在按钮上应用JQuery移动样式

时间:2013-03-26 11:24:45

标签: jquery html5 css3 jquery-mobile jquery-mobile-button

当我尝试添加以下jquery移动按钮时抛出jquery代码:

        // insert new button to bf div (breackfast div)
      $("#bf").html('<a href="FoodCat/FilterIndex?TimeId=2&CurDate=0" data-role="button" > Add new </a> ');

它并不意味着Jquery移动样式(data-role =“button”)??

下面是html:

  <div data-role="collapsible-set" data-theme="i" data-split-icon="gear" data-split-theme="e">
      <div data-role="collapsible">

        <h3> Breackfast   </h3>
                 <div id="bf"  style="margin:0 !important;padding:0 !important; display:inline !important"> 
             <ul data-role="listview" data-theme="i" ">
              <li>

                <input type="button" tabindex="@ViewBag.CurInt" id="bdelete" value="DeleteFood" onclick="bfd();"/>
                 </li>
                  </ul>
                </div>
             </div>
          </div>

下面是JQuery代码(PLZ注意:它调用服务并执行删除,但问题只在于不将渲染按钮视为jquery移动样式)

               <script type="text/javascript">
                    function bfd() {
                       var fp = '/api/service?prsnIduser1&MealTime=2&CurDate='+ $("#bdelete").attr("tabindex");
                      $.ajax({
                            url: fp,
                            type: 'Delete',
                            dataType: 'json',
                            contentType: 'application/json;  charset=utf-8',
                        success: function () {

                          $("#bf").html('<a href="FoodCat/FilterIndex?TimeId=2&CurDate=0" data-role="button" > Add new </a> ');
                      $("#bf a").buttonMarkup();

                             });
                            }
                   </script>

我在google和stackoverflow上进行了很多搜索,而且我在下面尝试但没有成功但没有成功:

        $("div[data-role=collapsible]").collapsible({refresh: true });
         // or even add :
           $("#bf").page();
          // or
           $("#bf a").buttonMarkup();

2 个答案:

答案 0 :(得分:4)

如果我理解正确,您希望动态创建 jQuery Mobile 按钮并正确设置样式。

这是一个有用的 jsFiddle 示例:http://jsfiddle.net/Gajotres/m4rjZ/

$(document).on('pagebeforeshow', '#index', function(){    
    // Add a new button element
    $('[data-role="content"]').append('<a id="button" href="FoodCat/FilterIndex?TimeId=2&CurDate=0" data-role="button">Button</a>');
    // Enhance new button element
    $('#button').button();
});

要了解有关jQuery Mobile如何处理动态添加内容及其增强方式的更多信息,请查看 ARTICLE ,或找到 HERE 即可。

以下是官方jQuery Mobile按钮 documentation 的链接。

答案 1 :(得分:3)

您可以通过调用button()方法“手动”创建按钮小部件,就像Gajotres建议的那样。

但是,如果您想要一个不依赖于窗口小部件类型的通用解决方案,您可以通过触发祖先元素上的create事件让jQuery Mobile“赶上”新标记。

例如:

$("#bf").html('<a href="FoodCat/FilterIndex?TimeId=2&CurDate=0" data-role="button">Add new</a>')
        .trigger("create");