jQuery Mobile,live('pageinit',function()方法到数据主题

时间:2012-03-01 18:58:02

标签: jquery jquery-mobile attributes

在我的页脚中,我写了这个函数......

    jQuery('#page').live('pageinit', function() {
$('.widget ul').attr('data-inset', 'true');
$('.widget ul').attr('data-theme', 'd');
$('.widget ul').attr('data-dividertheme', 'b');
$('.widget ul').attr('data-role', 'listview');
$('.widget ul').listview();
$('a.post-edit-link').attr('data-inline', 'true');
$('a.post-edit-link').attr('data-role', 'button');
$('a.post-edit-link').button();
$('#commentform').attr('data-theme', 'e'); ...

那么,如何在最后一行应用数据主题?什么是方法,如'listview'或'button'?

我也想知道如何将'widget ul'应用到第一个属性......

  

$('。widget ul:first')

无效。

感谢您的帮助!

此致

2 个答案:

答案 0 :(得分:2)

.widget ul:first将选择第一个ul元素作为.widget元素的后代。如果您想在ul中选择第一个列表项,则需要:.widget ul li:first

表单本身不会被jQuery Mobile初始化,因此您不需要定位表单,而是需要定位特定的输入窗口小部件并对其进行初始化。

要初始化一堆元素,您可以全部选择它们并在它们上面调用.trigger('create')

$('#commentform').find('input, textarea').trigger('create');

当你想要更新小部件而不是初始化小部件时,这会变得有点棘手:

$('#commentform').find('input[data-type="slider"]').slider('refresh').end()
                 .find('input[type="text]').textinput('refresh').end()
                 .find('input[type="checkbox"], input[type="radio"]').checkboxradio('refresh');

此外,您可以通过链接函数调用来优化代码,而不是多次重新选择相同的元素:

$('.widget ul').attr('data-inset', 'true')
               .attr('data-theme', 'd')
               .attr('data-dividertheme', 'b')
               .attr('data-role', 'listview')
               .listview();

$('a.post-edit-link').attr('data-inline', 'true')
                     .attr('data-role', 'button')
                     .button();

或者您可以将对象传递给.attr()以在一个函数调用中设置所有属性:

$('.widget ul').attr({
                   'data-inset'        : true,
                   'data-theme'        : 'd',
                   'data-dividertheme' : 'b',
                   'data-role'         : 'listview'
               }).listview();

$('a.post-edit-link').attr({
                         'data-inline' : true,
                         'data-role'   : 'button'
                     }).button();

答案 1 :(得分:0)

不确定为什么评论表格添加数据-thene无效......

jQuery('#page').live('pageinit', function() {
   var ulList = $('.widget ul'), aTag = $('a.post-edit-link')
   ulList.attr('data-inset', 'true');
   ulList.attr('data-theme', 'd');
   ulList.attr('data-dividertheme', 'b');
    ulList.attr('data-role', 'listview');
   ulList.listview();
   aTag.attr('data-inline', 'true');
   aTag.attr('data-role', 'button');
   aTag.button();
   $('#commentform').attr('data-theme', 'e'); ...

先尝试一下(原因是,你不想每次为那个jQuery对象解析DOM,把它保存到内存中,它会节省很多处理时间)...现在,试试这个你的选择问题:

$('.widget').first('ul');