2011-06-22 32 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

相關問題