jQuery移动按钮保持紧迫

时间:2013-07-25 23:13:24

标签: jquery-mobile

我有一个连接到ajax POST的jQuery移动按钮。如果POST失败,jQuery移动按钮会保持按下而不是“弹出”。任何想法?

3 个答案:

答案 0 :(得分:7)

可以轻松完成。

此处的 jsFiddle 示例针对我以前的一个答案:http://jsfiddle.net/3PhKZ/7/

如果你看一下这行代码:

$.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus');

它将尝试在当前活动页面上找到按下的按钮,如果成功则将删除2个负责按钮按下状态的类。不幸的是纯CSS解决方案在这里是不可您可以测试此示例,只需注释顶行,看看会发生什么。

选择器$ .mobile.activePage最后一件事只能在pagebeforeshow,pageshow,pagebeforechange,pagechange,pagebeforehide和pagehide页面事件中使用,所以要考虑到这一点。

如果您无法使用此选择器,只需将其替换为页面ID,如下所示:

$('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus');

所以你的最终代码看起来像这样:

$.ajax( "example.php" )
.success(function() { doStuff(); })
.error(function() { 
    $('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus');
 })

答案 1 :(得分:0)

在AJAX处理中添加一个错误子句,弹出按钮。

$.ajax( "example.php" )
.success(function() { doStuff(); })
.error(function() { /*code to unpress button here*/ })

答案 2 :(得分:0)

对于那些使用“输入”而不是“锚点”作为按钮的人。当使用例如“提交”和“重置”按钮并按下它们时,它们保持活动状态,这有时是不受欢迎的,具体取决于单击按钮时执行的操作。

我不确定它是否是预期的行为,我读过这是一个jQuery移动bug,但至少在jQM 1.3.2中仍然存在这种行为

是的诀窍是如上所述删除活动类然而那些变得棘手,因为类未添加到输入标记,i * t添加到父DIV *,由“输入”周围的所有丑陋的东西创建,以设置按钮的样式,这就是为什么在选择输入时删除活动类不起作用。

通过分析jquery mobile生成的HTML,解决方法是:

删除输入父级的活动类而不是实际的输入元素

$( 'mybutton_class_or_ID ')的父()removeClass(' UI-BTN-活性');

我更喜欢这种方法,而不是清除整个页面中的所有活动类,以防你想要更有选择性地删除类。