尝试通过javascript / jquery根据链接文本有条件地禁用链接

时间:2014-03-20 15:38:29

标签: javascript jquery

我有一个链接,其文本内容由某些后端软件决定。根据文本内容的不同,该链接应该是可点击的或不可点击的。如果链接文本为“No New Messages”,我试图使链接无法点击。我正在尝试使用以下代码:

if ($('a#full_notifications_link').text() == "No New Messages"){
    $('a#full_notifications_link').click(function(){
        return false;
    });
}

这不起作用。链接工作正常。如果链接文本为“No New Messages”,如何使链接无效?

要清楚,我不能更改任何HTML,因为它每次都会有所不同,具体取决于后端。此外,我已经确定问题出在第1行,因为如果我在它之后发出警报,警报就不会出现。

此外,当文本显示“No New Messages”时,这是html:

<a data-remote="true" href="/usernotificationslist" id="full_notifications_link">
    No New Messages
</a>

4 个答案:

答案 0 :(得分:1)

请看这个小提琴:http://jsfiddle.net/jFIT/J8eEL/

$('a#full_notifications_link').click(function(event){
    if ($.trim($('a#full_notifications_link').text()) == "No New Messages"){
        event.preventDefault();

        return false;
    }
});

从函数返回false false通常不会这样做.. event.preventDefault();

答案 1 :(得分:1)

<强> HTML

<a href="javascript:myfunction();" id="full_notifications_link">text</a>

<强> JAVASCRIPT

function myfunction(){
    var text_of_link = $('a #full_notifications_link').text();
    if(text_of_link == "No New Messages"){
        //do nothing  
    }else{
        window.location.replace($('#full_notifications_link').attr("href"));
    }
}

答案 2 :(得分:0)

确保您没有空间来满足条件权利.. 可以肯定的是,不要打破它们

<a data-remote="true" href="/usernotificationslist" id="full_notifications_link">No New Messages</a>

另外,你已经把它们放在里面了吗?

$(document).ready(function(){
    //enter code here
});

答案 3 :(得分:0)

您可以使用preventDefault通过捕获click事件

来执行此操作

BTW这对我不起作用我不知道为什么onclick没有找到要绑定的功能呵呵

即使这是我认为最好的方法http://jsfiddle.net/A2wns/1/

// HTML
<a href="..." onclick="checkMessage()">No New Messages</a>

// js
function checkMessage(evt){
  if ( $(evt.target).text() === "No New Messages"){
     evt.preventDefault();
  }
}