2015-12-22 48 views
-2

我試着如果某些條件下使用,如果在jquery.I statment已經看過其他問題,並嘗試這些解決禁止使用jQuery的鏈接無法正常工作

if (discussionPointsSize == 0) { 
    $('#discussionPointsLink').preventDefault(); 
    $('#discussionPointsLink').bind('click', false); 
    $('#discussionPointsLink').click(function() { 
    return false; 
    }); 
    $('#discussionPointsLink').data('disabled()') 
    $('#discussionPointsLink').click(function() { 
    return ($(this).attr('disabled')) ? false : true; 
    }); 
    $('#discussionPointsLink').click(function(e) { 
    e.preventDefault(); 
    //do other stuff when a click happens 
    }); 
} 

但所有遇到檢查,以禁用鏈接上面的解決方案不禁用鏈接。只是爲了確保我嘗試了.hide()並且鏈接被隱藏了,這意味着我正在訪問鏈接right.so任何人都可以告訴我該怎麼辦?

+2

究竟你*禁用的意思* ..?你想阻止它執行附加的功能,或改變它的外觀,或兩者兼而有之。 –

+0

我依靠不明白爲什麼我得到了對這個問題的投票。清楚而不重複。 – robel

回答

5

這裏你應該在CSS嘗試pointer-events: none;。如果條件成立,我們將爲其添加類disable-this。如果沒有,我們將刪除類disable-this

if (discussionPointsSize == 0) { 
    $('#discussionPointsLink').addClass('disable-this'); 
} else { 
    $('#discussionPointsLink').removeClass('disable-this'); 
} 

我們將定義disable-this類這樣

.disable-this{ 
    pointer-events: none; 
    } 

或者你應該做這樣的,如果你不希望任何東西添加到您的CSS文件

if (discussionPointsSize == 0) { 
    $('#discussionPointsLink').css({'pointer-events': 'none'}); 
} else { 
    $('#discussionPointsLink').css({'pointer-events': 'inherit'}); 
} 
+0

是的,它會工作,但看起來並不漂亮。讓我們保留事件'css' – Rayon

+0

第二條語句在指針事件上有問題:因爲它找不到它,但第一條語句完美無缺。感謝 – robel

+1

是的。我忘記把指針事件放在單引號中。現在它工作了! –

0

你可以使用這個。如果你想禁用它的功能。

$('.my-link').click(function (e) {e.preventDefault();return false;}); 
+1

添加e.preventDefault()以及:) – vivid

+0

它不會禁用任何東西。 – dfsq

+0

我已經說過,這不起作用,因爲它在我的代碼中明確指定了 – robel

0

試試這個

$(this).attr('href',"#") 

它不會進行點擊,你應該改變顏色以灰色

0

這是正確的做法:

$('#discussionPointsLink').click(function(e) { 
    if(discussionPointsSize == 0){ 
     e.preventDefault(); 
    }else{ 
     //do other stuff when a click happens 
    } 
    }); 

我猜測你正試圖解除綁定點擊處理程序來執行代碼,如果是這種情況,那麼你可以使用.off(),但你需要將事件與.on()綁定:

if(discussionPointsSize == 0){ 
    $('#discussionPointsLink').off(); 
} 
+1

因爲這是一個'anchor'標籤並且'click'處理程序用在它上面,所以'e.preventDefault();'應該始終存在,而不管條件。人們可以使用條件做其餘的事情。 – Rayon

+0

@RayonDabre我覺得我實際上回答了一個錯誤的問題。 – Jai

+1

其實:P我期待在問題下面有很多評論,但他們中的很多人首選回答它,然後才知道這個問題。 – Rayon

0

試試這個.....

if (discussionPointsSize == 0) { 
     $('#discussionPointsLink').attr("href","javascript:void(0);"); 
} 
0

這將禁用鏈接並將其設置爲純文本,如果條件變爲false,則會再次使其成爲鏈接。

$(function() { 
 
    $(".anylink").click(function(e) { 
 
    var discussionPointsSize = 0; 
 
    if (discussionPointsSize == 0) { 
 
     e.preventDefault(); 
 
     this.disabled=true; 
 
     $(this).attr("data-href", this.href); // Saving it if you want to regenrate a link. 
 
     this.removeAttribute('href');  
 
     this.style.textDecoration = 'none'; 
 
     this.style.cursor = 'default'; 
 
     return false; 
 
    } 
 
    else{ 
 
     this.disabled=false; 
 
     //assign href dynamically 
 
     this.href = $(this).data("href"); 
 
     this.style.textDecoration = "underline"; 
 
     this.style.cursor = "hand"; 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="http://example.com" data-href="http://example.com" target="_blank" class="anylink">Yo, Click Me</a>

0

我覺得有很多的方式來解決它,我的解決辦法是添加屬性「禁用」,並「的preventDefault()」,一個有些「CSS 「代碼象下面這樣:

HTML

<a id="a1" href="http://vnlives.net">vnlives.net</a> | 
<a id="a2" href="http://www.google.com">Google</a> 

JAVASCRIPT

$('#a1').attr('disabled', 'disabled').css("color","#ccc"); 

$('a').live('click', function(e) { 
    if ($(this).attr('disabled') == 'disabled') { 
     e.preventDefault(); 
    } 
}); 

DEMO:https://jsfiddle.net/bnson/7hzvvwp8/3/

注:使用jQuery 1.7.2