2012-02-02 136 views
0

我想禁用超鏈接,以便如果用戶單擊鏈接,則不會發生任何事情,鏈接以灰色顯示,看起來像禁用。下面是HTML的超級鏈接:如何禁用正確的超鏈接

<span href="#" class="showGrid">[Open Grid]</span> 

下面是我使用的嘗試禁用超鏈接,但jQuery代碼它不是將其關閉:

$(".showGrid").attr("disabled", "disabled"); 

你如何禁用超鏈接?

此外,我有一個超鏈接顯示在頂部和每行添加使用相同的類(它需要相同的類,這兩個超鏈接按我希望的方式工作)。如何禁用下面的html代碼中的超鏈接而不是jQuery代碼中的超鏈接?

下面是完整的HTML超鏈接:

<table id="optionAndAnswer" class="optionAndAnswer"> 
<tr> 
     <th colspan="2"> 
     Option and Answer 
    </th> 
</tr> 
<tr class="option"> 
<td>Option Type:</td> 
<td> 
<div class="box"> 
    <input type="text" name="gridValues" class="gridTxt maxRow" readonly="readonly" /> 
    <span href="#" class="showGrid">[Open Grid]</span> 
</div> 
</td> 
</tr> 
</table> 

下面是超鏈接jQuery代碼:

function insertQuestion(form) { 

var $tr = $("<tr class='optionAndAnswer' align='center'></tr>"); 
var $options = $("<td class='option'></td>"); 

    $('.gridTxt', context).each(function() { 

    var $this = $(this); 
    var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' /><span href='#' class='showGrid'>[Open Grid]</span>").attr('name',$this.attr('name')) 
        .attr('value',$this.val()) 

    $options.append($optionsText); 

    }); 

$tr.append($options); 

} 
+0

禁用的屬性僅對按鈕,輸入,OPTGROUP,選項,選擇和textarea元素。 – j08691 2012-02-02 00:13:45

回答

1

之間的差異要禁用超鏈接,事件處理函數附加到點擊事件,然後防止默認動作。這將是這樣的:

$('.showGrid').click(function(e){ 
    e.preventDefault(); 
    //do whatever you want the link to actually accomplish 
}); 

要回答你的第二個問題,你不需要做任何事,只要我上面貼的代碼創建的任何額外的鏈接之前運行。上面的代碼只能在代碼運行時的鏈接上運行。如果這是不可能的,但是,你必須運行額外的鏈接已經存在的代碼,你可以這樣做:

$('.showGrid:first').click(function(e){ 
    //same as I wrote above 
}); 

我不得不看到更多的潛在的HTML雖然知道肯定如果:first選擇器將完成這項工作。

+0

@ user1181690,你不應該這樣做。該用戶正確回答了您的問題,值得讚揚。你應該回滾你的問題,接受這個答案,然後爲你的全新問題寫一個新帖子。 – Sparky 2012-02-02 00:44:37

0

如果要禁用,你需要點擊處理程序添加到它,像一個超鏈接所以:

$(".showGrid").click(function(event){ 
      //maybe handle the click using javascript here 
      event.preventDefault(); 
    }) 

編輯:原始問題已編輯。請參閱here(感謝maxevent.preventDefault()return false;

+2

雖然您的答案將阻止單擊鏈接時發生默認操作,但它也會阻止用戶沒有請求的冒泡點擊事件。根據具體情況,這可能是一個問題。請參閱此問題的答案以獲得全面的解釋:http:// stackoverflow。com/questions/1357118/javascript-event-preventdefault-vs-return-false – maxedison 2012-02-02 00:17:05

0

超鏈接標記沒有允許將其禁用的屬性。這需要JavaScript。正如你已經使用jQuery去,這將是最好的方式:

HTML:

<a class="disabledLink">some text</a> 

的Javascript:

$(".disabledLink").click(function(event) { 
    event.preventDefault(); 
});