1

假设我有一个 listview 字符串

 var html = "";
html += "<ol id=list2>"+
.... + 
"</ol>"

根据用户输入,我必须改变我从上面的字符串创建的列表视图的主题和一些其他属性。

我尝试了以下但列表视图没有刷新。

$("#home div:jqmData(role=content)").append (html);
$("#list2").listview();
  • $("#list2").attr('data-theme', 'e'); $("#list2").listview('刷新');
  • $("#list2").jqmData("theme", "e") $("#list2").listview('refresh');

但是主题没有更新。同样,我必须更新列表视图的其他一些属性,例如inset, splitIcon。请让我知道如何以编程方式执行此操作。

4

2 回答 2

0

要以编程方式更改主题,仅更改data-theme属性是不够的,您还必须删除旧主题添加的类并手动添加新的类。在这里,您有几个链接可以指出这一点:

在 Jquery Mobile 的文本框中以编程方式设置数据主题

http://forum.jquery.com/topic/how-to-refresh-the-theme-of-a-button

于 2012-12-27T08:59:25.117 回答
0

不幸的是,这不能通过列表视图刷新来完成,您需要这样做才能实现主题更改:

var newTheme = 'b';

$.mobile.activePage.find('.ui-btn, .ui-li, .ui-listview').removeClass('ui-btn-up-a ui-btn-up-b ui-btn-up-c ui-btn-up-d ui-btn-up-e ui-btn-hover-a ui-btn-hover-b ui-btn-hover-c ui-btn-hover-d ui-btn-hover-e').addClass('ui-btn-up-' + newTheme ).attr('data-theme', newTheme );
$.mobile.activePage.find('.ui-header, .ui-footer').removeClass('ui-bar-a ui-bar-b ui-bar-c ui-bar-d ui-bar-e').addClass('ui-bar-' + newTheme ).attr('data-theme', newTheme );
$.mobile.activePage.removeClass('ui-body-a ui-body-b ui-body-c ui-body-d ui-body-e').addClass('ui-body-' + newTheme ).attr('data-theme', newTheme );  

这是我的工作示例:http: //jsfiddle.net/Gajotres/8uac7/。您应该评论上面的代码以查看差异。

于 2012-12-27T09:00:40.943 回答