2014-10-24 5 views
0

Я пытаюсь определить, когда изменяется текст гиперссылки (на основе функции javascript у меня нет контроля над).Подождите, пока элемент изменится, а затем свяжите событие click

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

$("a:contains('Like')").click(function(){LikeClick($(this))}); 

function LikeClick() { 

    $("#" + ths[0].id + ":contains('Unlike')").ready(function(){ 
     alert('the text has been changed') 
     //Attach click event to all like buttons 
    }); 
} 

Вот оригинальный элемент:

<a href="javascript:;" id="likesElement-1" class="ms-secondaryCommandLink">Like</a> 
+0

'ready' не делать то, что вы думаете, что он делает. Также ваш код имеет синтаксическую ошибку и как работает «JS finish»? – undefined

+0

Исправлена ​​ошибка синтаксиса. Скрипт заканчивается путем изменения внутреннего текста на «Не похоже» – Colbs

ответ

0

Что-то вроде этого?

$('.like').on('click', function(){ 
    //whatever you want the code to do on a like. 
    //If it has a callback function wrap the code below in that. 
    this.removeClass('like'); 
    this.addClass('unlike'); 
    this.text("Unlike"); 
}); 

$('.unlike').on('click', function(){ 
    // unlike code goes here. Same as before with callback. 
    this.removeClass('unlike'); 
    this.addClass('like'); 
    this.text("Like"); 
}); 

Просто добавьте like класс на ваших, как ссылки/кнопки. Возможно, вам нужно будет добавить prevent default в начало этих функций.

+0

спасибо за ответ! У меня есть точный идентификатор, хотя я хочу только настроить таргетинг на один элемент и прослушать его текст. Я попробую это с помощью селектора ID – Colbs

+0

Это не сработало для меня. Все, что я хочу сделать, это, в основном, иметь предупреждение, когда текст изменяется в отличие от – Colbs

0

Это кажется простым решением вашей проблемы:

$('.theButton').on('click',function(){ 

    //Toggle the 'like' class on each click, then look for the class 
    if($(this).hasClass('like')){ 
     $(this).removeClass('like').addClass('unlike'); 
     likeClick(); 
    } else { 
     $(this).removeClass('unlike').addClass('like'); 
     unlikeClick(); 
    } 
} 
+0

. Я не пытаюсь изменить класс кнопки, я пытаюсь обнаружить, когда текст изменен скриптом, который я не контролирую , Я изменил вопрос, надеюсь, моя цель понятна. спасибо – Colbs

Смежные вопросы