Попытка условно отключить ссылку в зависимости от текста ссылки через javascript / jquery

0

У меня есть ссылка, текстовое содержимое которой определяется некоторым программным обеспечением. В зависимости от того, что представляет собой текстовый контент, эта ссылка должна быть кликабельна или неактивна. Я пытаюсь сделать ссылку не интерактивной, если текст ссылки "Нет новых сообщений". Я пытаюсь использовать следующий код:

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

Это не работает. Ссылка работает так же, как и в обычном режиме. Как получить ссылку, чтобы не работать, если текст ссылки "Нет новых сообщений"?

Чтобы быть ясным, я не могу изменить какой-либо из html, потому что он будет отличаться каждый раз в зависимости от бэкэнд. Кроме того, я решил, что проблема связана с линией 1, потому что, если я помещаю предупреждение сразу после него, предупреждение не появляется.

Кроме того, вот html, когда в тексте говорится "Нет новых сообщений":

<a data-remote="true" href="/usernotificationslist" id="full_notifications_link">
    No New Messages
</a>
  • 0
    Кажется, работает хорошо для меня: jsBin.com
Теги:

4 ответа

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;
    }
});

return return false из функции обычно не делает этого. event.preventDefault();

  • 0
    Я не могу изменить HREF. Я не могу изменить ссылку, потому что она полностью определяется бэкендом.
  • 0
    Понял .. event.preventDefault тогда? можно посмотреть, какой HTML создает ваша БД?
Показать ещё 5 комментариев
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"));
    }
}
  • 0
    спасибо, но я не могу изменить ни один из HTML, потому что он создается бэкэндом и каждый раз отличается.
  • 0
    Я обновил ответ
0

Удостоверьтесь, что у вас нет пробелов, чтобы они соответствовали условию. Конечно, не прерывайте их

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

также, вы уже разместили их внутри?

$(document).ready(function(){
    //enter code here
});
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();
  }
} 
  • 0
    ОК только что увидел то же решение, обновленное выше: p

Ещё вопросы

Сообщество Overcoder
Наверх
Меню