改变使用jQuery一个jQuery移动按钮的值

问题描述 投票:25回答:7

想知道如果你能帮助我。我似乎已经改变我与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>

我会感激任何反馈家伙。谢谢

jquery jquery-mobile
7个回答
12
投票

更新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>元素之前出现的事实。


32
投票

因为jQuery Mobile的在你的输入类型=“按钮”元素生成HTML,那你看到的文字按钮实际上没有价值,但产生的跨度内的文本。您可以遍历DOM寻找实际的跨度,或者告诉jQuery的调用.button(“刷新”),像这样重新生成按钮HTML:

$("#MyButton").val("changed value");
$("#MyButton").button("refresh");

推荐后者,因为它会留在jQuery Mobile的未来版本相兼容,而如果遍历jQuery开发团队选择更改按钮生成的HTML结构的DOM可能打破。


6
投票

[弃用]

使用按钮输入具有不能够改变输入的属性中,将传播到jquerymobile的按钮方式的这个缺点。那么只有NE方式:

$('#myButton').parent().find('.ui-btn-text').text('zzzzz');

如果input按钮是没有必要使用应用程序,而不存在任何JavaScript(或你不希望它没有JavaScript的工作),那么你应该总是使用<a>标签,因为它们可以容器。


0
投票

这对我的作品:

$('#idOfOriginalButton').prev('.ui-btn-inner').children('.ui-btn-text').html('new text');

http://forum.jquery.com/topic/changing-text-works-except-for-buttons:从解决方案


0
投票

随着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">&nbsp;
 </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选择就像一个魅力。


0
投票

这是很容易的,存在一种用于此的方法,按钮(“刷新”)

$('#mybutton').val('new Value').button('refresh');

祝好运!


-2
投票

更新了我下面的作品(类似于从科瓦奇答案):

$('#MyButton').html('changed value').button('refresh');

要么

$("#MyButton").val("changed value").button("refresh");
© www.soinside.com 2019 - 2024. All rights reserved.