Замените текст на jQuery, если текст существует - PullRequest
0 голосов
/ 17 мая 2011

Я пытаюсь сделать в jQuery первый комментарий из группы, которая скрыта до тех пор, пока пользователь не нажмет на кнопку, и вывести первый комментарий, чтобы он был видимым. У меня это работает, в точку. Я хочу, чтобы это происходило при загрузке страницы, поэтому у меня есть это в документе. Уже, но это не сработает. Поэтому я прикрепил его к событию mousemove, и оно работает.

Но то, что я хочу сделать сейчас, - это если есть комментарий, возьмите комментарий и покажите его, как я делал ранее. Но если нет комментария, тогда покажите слова «Без комментариев». Ниже приведен код, который я использую.

if ( jQuery('.dsq-commenter-name').length ){
          jQuery(document).mousemove(function() {
            jQuery('#comments p strong').text( jQuery('.dsq-commenter-name').text() );
            jQuery('#comments p span.comment_excerpt').text( jQuery('.dsq-comment-text').text() );
        });
      }

Этот код не работает. Если я уберу оператор if, он отлично заменит текст, но если комментариев нет, он просто оставит пустое место вместо слов «Без комментариев». Если я помещаю код прямо в консоль, он работает. Поэтому я не уверен, почему он не будет работать, когда страница загружается. Я предполагаю, что это должно быть что-то с оператором if, но я пробовал все виды вещей и не могу заставить его работать.

EDIT: Не показано в этом коде, но у меня есть все в jQuery (документ) .ready (function () { и это, похоже, не помогает. Но комментарии обрабатываются Disqus, и поэтому я думаю, что они загружаются позже, так как я могу присоединить к ним событие?

ВТОРОЕ РЕДАКТИРОВАНИЕ: Хорошо, я исправил это, но не уверен, что это лучший способ сделать это. Благодаря @Jacob я решил, что комментарии загружаются после того, как код уже выполнен. Поэтому я добавил к коду, используя setTimeout, и поэтому функция будет запускаться примерно через секунду после загрузки страницы, и это работает. Опять же, не уверен, если это способ сделать это или нет, поэтому, пожалуйста, поправьте меня, если я ошибаюсь или вы хотите увидеть код.

Ответы [ 2 ]

0 голосов
/ 17 мая 2011

jQuery('.dsq-commenter-name') вернет селектор jQuery, который найдет нужный элемент..length всегда будет истинным, если элемент не существует, независимо от содержимого.Если вы заботитесь о тексте, вы хотите сделать .text () на выходе.Он вернет ноль, если по запросу не найдено ни одного элемента.

Возможно

if (jQuery('.dsq-commenter-name').text()) { // checks for "", null, undefined
0 голосов
/ 17 мая 2011

Я не уверен, что длина - лучшая переменная для проверки. Попробуйте val:

if (jquery('.dsq-commenter-name').val() != "") {  //or try != null
    //do stuff.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...