2013-07-19 30 views
0

我在jquery mobile中有一个简单的(新手在这里)任务。更改应用了自定义样式的按钮的文本。我可以在'pageinit'事件中改变文本而没有问题,但是我失去了过程中的自定义样式。已经阅读了大量的文章,但仍然缺乏工作解决方案。 html页面的jquery mobile在按钮文字改变后丢失了自定义样式

摘录如下阿贾克斯

CSS

#goal .ui-btn-inner { 
    text-align: center; 
    background: chartreuse; 
    ui-disabled: true; 
} 

按钮加载设置样式

<div data-corners="false" data-role="controlgroup" > 
    <a href="#" data-role="button" id="goal" > 
    text to be changed 
    </a> 
</div> 
... 

这里是jQuery Mobile的代码改变按钮上的文字。

$(document).delegate('#problem_screen', 'pageinit', function() { 
    $('#goal').on('click', function() { 
    console.log('goal clicked'); 
    }); 
    $('#goal .ui-btn-text').text('New button text'); 
}); 

感谢

+2

它是如何失去的风格,你可以提供一个快照看起来在这里很好,文字按钮改为单击http://jsfiddle.net/Palestinian/xWNcS/ – Omar

+0

罗斯:当我尝试,我得到“未捕获的错误:在初始化之前无法在按钮上调用方法;试图调用方法'刷新'“。也许刷新必须在其他地方完成 –

+0

Omar:问题出在ajax过渡到页面之后我挂钩pageinit事件jqm似乎应用其常规按钮样式,我失去了我的自定义样式如果你运行'standalone'页面,它可以正常工作 –

回答

0

最后得到了这个工作。我的第一个JQM错误是在多页面应用程序的每个页面上定义自定义样式。这是错误的 - 您必须在一个位置定义所有的自定义样式,通常是每个页面包含的样式表文件。另一个错误是在不同的页面上有相同的id值。错误ID值在整个应用程序中必须是唯一的。

适用(在这种情况下,增强了风格)是.addClass(“)在我来说,我所定义的样式如下API:

.goal-style { 
text-align: center; 
background: charteuse; 
ui-disabled: true; 
} 

现在,经过我更新按钮的文本我说: ?

$('#goal').addClass('goal-style'); // Note: do not use '.goal-style'