想知道如果你能帮助我。我似乎已经改变我与jQuery jQuery Mobile的按钮上的文本的一个问题。
$("#myButton .ui-btn-text").text("New text");
建议代码上面这对于一个相关的问题似乎并没有工作。
也不对:
$("#myButton").attr(value,"New Test");
我的按钮的代码如下:
<input type="button" name="answer" id="myButton" data-theme="b" data-answer="4" value="next"></button>
我会感激任何反馈家伙。谢谢
更新2 我工作在捣鼓一个问题,我注意到,与jQuery Mobile的1.0b2的标记有一点不同:
<div data-theme="b" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-down-b ui-btn-hover-b" aria-disabled="false">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">Show Submit Button</span>
</span>
<input type="button" name="answer" id="myButton" data-theme="b" data-answer="4" value="next" class="ui-btn-hidden" aria-disabled="false">
</div>
有了这个标记,你需要做以下更改按钮上的文本:
$('#myButton').prev('span').find('span.ui-btn-text').text("Next Text");
更新 信贷,信用是由于 - 事实证明,@ naugtur的回答这个问题,这使得完全相同的点作为我的编辑,被张贴之前,我抽时间去纠正我原来的答复。
我不是很熟悉的jQuery Mobile和您正在使用该按钮的<input>
当我最初回答没有注册的事实。这是我与显示你会如何做一个工作示例更新的答案。
在<input type="button" />
的情况下,jQuery Mobile的似乎隐藏<input>
元素并创建样式看起来像按钮新<a>
元素。这就是为什么当你试图获得并使用<input>
作为选择的id设置文本,它不会因为这<span>
没有你在屏幕上看到的文本。生成的标记看起来是这样的
<!-- This 'a' button is added dynamically by jQuery Mobile, for the input element that follows it -->
<a role="button" href="#" data-theme="c" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">My Value</span>
</span>
</a>
<input type="button" data-role="button" value="My Value" id="myButton" name="answer" class="ui-btn-hidden ui-btn ui-btn-up-c ui-btn-corner-all ui-shadow" tabindex="-1" data-theme="c">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text"></span>
</span>
</input>
我还没有尝试过了足够的例子是完全有信心,但这应该工作
$("#myButton").prev('a').find('span.ui-btn-text').text("New Text")
这里的a working example showing how to change text for both types of buttons(<a>
和<input type="button">
)。
我不建议使用这种过度<a>
按钮,如果你能帮助它虽然因为没有一个id
和我的做法,至少依赖于对应<a>
的<input type="button" />
只是<input>
元素之前出现的事实。
因为jQuery Mobile的在你的输入类型=“按钮”元素生成HTML,那你看到的文字按钮实际上没有价值,但产生的跨度内的文本。您可以遍历DOM寻找实际的跨度,或者告诉jQuery的调用.button(“刷新”),像这样重新生成按钮HTML:
$("#MyButton").val("changed value");
$("#MyButton").button("refresh");
推荐后者,因为它会留在jQuery Mobile的未来版本相兼容,而如果遍历jQuery开发团队选择更改按钮生成的HTML结构的DOM可能打破。
[弃用]
使用按钮输入具有不能够改变输入的属性中,将传播到jquerymobile的按钮方式的这个缺点。那么只有NE方式:
$('#myButton').parent().find('.ui-btn-text').text('zzzzz');
如果input
按钮是没有必要使用应用程序,而不存在任何JavaScript(或你不希望它没有JavaScript的工作),那么你应该总是使用<a>
标签,因为它们可以容器。
这对我的作品:
$('#idOfOriginalButton').prev('.ui-btn-inner').children('.ui-btn-text').html('new text');
http://forum.jquery.com/topic/changing-text-works-except-for-buttons:从解决方案
随着jquery.mobile-1.1.0,我经历的东西略有不同,并已筛选的麻烦通过响应找到可行的答案。我已经证明我遇到的问题和解决我发现下面。
片段1
<script type="text/javascript">
$('#task').live('pageinit', function() {
$('#checkin_button').html("Check-in to receive points");
});
</script>
有了这个,我能更改文本,但该方法清除了所添加的跨度和类,从而压缩按钮。
HTML
<div id="task_button">
<a data-role="button" id="checkin_button" data-transition="slide" data-theme="b" href="#task-success" data-icon="check" data-corners="true" data-shadow="true" data-iconshadow="true" data-iconsize="18" data-wrapperels="span" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-b">
Check-in to receive points
</a>
</div>
片段2
<script type="text/javascript">
$('#task').live('pageinit', function() {
$('#checkin_button').val("Check-in to receive points");
});
</script>
这不得不在按钮上的文字没有影响。
HTML
<div id="task_button">
<a data-role="button" id="checkin_button" data-transition="slide" data-theme="b" href="#task-success" data-icon="check" data-corners="true" data-shadow="true" data-iconshadow="true" data-iconsize="18" data-wrapperels="span" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-icon-left ui-btn-up-b">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">
Original Text.
</span>
<span class="ui-icon ui-icon-check ui-icon-shadow ui-iconsize-18">
</span>
</span>
</a>
</div>
片段3
<script type="text/javascript">
$('#task').live('pageinit', function() {
$('#checkin_button').val("Check-in to receive points").button("refresh");
});
</script>
这产生以下错误消息:
不能调用上在初始化之前按钮的方法;试图调用方法“刷新”
这是困惑我,因为在页面初始化之后才这个函数被调用。进一步阅读,我则在stackoverflow.com/a/7279843/61821注意到Priyank的参考工作回答
摘录4 - 工作
<script type="text/javascript">
$('#task').live('pageinit', function() {
$('#checkin_button .ui-btn-text').val("Check-in to receive points");
});
</script>
一个更好的jQuery选择就像一个魅力。
这是很容易的,存在一种用于此的方法,按钮(“刷新”)
$('#mybutton').val('new Value').button('refresh');
祝好运!
更新了我下面的作品(类似于从科瓦奇答案):
$('#MyButton').html('changed value').button('refresh');
要么
$("#MyButton").val("changed value").button("refresh");