2011-06-22 33 views
13

我有一个jQuery Mobile的Beta 1的网站与jQuery 1.6.1链接按钮是这样的:如何禁用jQuery Mobile中的链接按钮?

<a id="subselection" href="#" data-role="button" data-theme="b">TEST</a> 

而且在我的document.ready设置的单击事件:

$('#subselection').livequery("click", function(){ 
    alert('test'); 
}); 

我whant禁用此“链接按钮”,我试图

$('#subselection').button('disable') 

而该命令设置按钮风格,因为它被禁用,但点击事件的作品。

我也曾尝试

$('#subselection').prop('disabled', true); 

和$( '#部分选定')丙( '禁用')。给出真实的,但它没有被禁用。

有人有一个好主意。

+0

您应该更新您的其他问题http://stackoverflow.com/questions/6437187/jquery-移动 - 如何检查 - 如果按钮被禁用,因为它是相关的,并且人们已经在那里帮助你。 – lancscoder

+0

你可以制作两个按钮一个用于禁用,另一个用于激活,也可以使用javascript附加和分离onclick事件。 –

回答

13

a元素没有属性disabled。因此,定义一个不会影响您可能附加的任何事件处理程序。

例如:http://jsfiddle.net/niklasvh/n2eYS/

有关可用属性的列表,看看在HTML 5 reference

解决你的问题,你可以代替例如指定disabled作为data的元素:

$('#subselection').data('disabled',true);

,然后在您的活动检查,如果其设定:

if (!$(this).data('disabled'))

示例:http://jsfiddle.net/niklasvh/n2eYS/5/

+0

看起来像它的作品不错,将尝试在我的项目上,谢谢! – RickardP

+0

谢谢,这实际上帮了我。因为我在禁用$''''这样的链接时遇到了一些奇怪的问题,点击(function(e){e.preventDefault();});'然后用'$('a')重新启用。函数(e){//再做旧东西});'。旧的东西是一些如何在重新实现点击处理程序后陷入无限循环。 – Dmytro

0

您也可以直接使用按钮标记/小部件<button>TEST</button>,它具有正确的禁用功能。如果您只是用它来捕捉事件并运行一些JavaScript,则不确定使用链接会带来什么优势。

2

尝试使用

$('#subselection').button().button('disable'); //disable in JQM 

$('#subselection').button().button('enable'); //enable in JQM 

这似乎直观地工作,以显示禁用/启用的风格......然而,“按钮”仍然是可点击(因此要当心!:P)

25

链接按钮例如:

JS

var clicked = false; 

$('#myButton').click(function() { 
    if(clicked === false) { 
     $(this).addClass('ui-disabled'); 
     clicked = true; 
     alert('Button is now disabled'); 
    } 
}); 

$('#enableButton').click(function() { 
    $('#myButton').removeClass('ui-disabled'); 
    clicked = false; 
}); 

HTML

<div data-role="page" id="home"> 
    <div data-role="content"> 

     <a href="#" data-role="button" id="myButton">Click button</a> 
     <a href="#" data-role="button" id="enableButton">Enable button</a> 

    </div> 
</div> 

注: - http://jquerymobile.com/demos/1.0rc2/docs/buttons/buttons-types.html

链接样式像按钮均具有相同的视觉选项,如下真正 基于表单的按钮,但也有一些重要的不同。 基于链接的按钮不是按钮插件的一部分,只是使用 底层的buttonMarkup插件来生成按钮样式,所以不支持表单按钮方法(启用,禁用,刷新)的 。 如果您需要禁用基于链接的按钮(或任何元素),则可以使用 将自己禁用的禁用类与 JavaScript自己一起应用,以实现相同的效果。

+2

这个选项实际上比当前接受的答案(Niklas')要好,因为按钮实际上看起来好像被禁用了,而jQuery Mobile会自动忽略来自具有'ui-disabled'类的按钮的点击。 这只是让人奇怪,为什么jQM develpers没有采取额外的,显然微小的最后一步,并简单地为基于链接的按钮提供了一些启用/禁用方法。 –

+0

@Haroldo_OK谢谢!我认为jQM确实提供了一些更好的1.1.0 http://jquerymobile.com/demos/1.1.0/docs/buttons/buttons-methods.html –

1

我知道已经有一个公认的答案,但我认为这个答案更容易理解。只需点击函数返回false。

<a id="subselection" href="#" data-role="button" data-theme="b">TEST</a> 

<script> 
$('#subselection').click(function() { 
    alert("do some code here"); 
    return false; 
}); 
</script> 
8

在这种情况下不需要jquery/javascript。只需添加一个'禁用'的课程。

例如像:

<a class="ui-disabled" id="subselection" href="#" data-role="button" data-theme="b">TEST</a> 

多数民众赞成我做什么,这对我的作品;)

+0

在IE11中不起作用 – WhatsInAName

+0

对我来说最好的选择很远,因为它会对按钮样式进行分类并影响操作。 – xgretsch

相关问题