Добавление Jquery HTML? - PullRequest
       4

Добавление Jquery HTML?

3 голосов
/ 06 августа 2009

Я пытаюсь добавить текст ссылки внутри <li> к <ul> Проблема заключается в том, что он сканирует и находит дубликаты, а не добавляет новый

.

Вот код:

$('.popular-list li a').live("click",function() //this will apply to all anchor tags
        { 
                var stuff = $(this).text();
                var match = $('#favoritesdrinks li:contains(' + stuff + ')');


                if(match) {
                        alert("Already Added")
                } else {
                        $('#favoritesdrinks').append('<li>'+stuff+'</li>');


                }


        }
);

ОБНОВЛЕНИЕ - ЭТО РАБОЧИЙ КОД:

 $('.popular-list li a').live("click",function() //this will apply to all anchor tags
        { 
                var $stuff = $(this).text();
                var hasDuplicate = false;

      $('#favoritesdrinks li').each( function(){
       if ($(this).text() === $stuff ){
          hasDuplicate = true;
          return false;
       }
    });

    if (hasDuplicate ) {
       alert("Already Added") } 
    else {         
       $('#favoritesdrinks').append('<li>'+$stuff+'</li>'); 
    }
});

Ответы [ 3 ]

3 голосов
/ 06 августа 2009

вам нужно будет через каждый элемент li. Затем выполните сравнение, и, если у вас есть совпадение, вы можете установить переменную в значение true, а затем разорвать их, используя return false, чтобы не повторять итерацию, когда уже знаете результат.

 $('.popular-list li a').click(function() { 

    var $stuff = $(this).text();
    var hasDuplicate = false;

    $('#favoritesdrinks li').each( function(){
       if ( $(this).text() === $stuff ){
          hasDuplicate = true;
          return false;
       }
    });

    if (hasDuplicate ) {
       alert("Already Added") } 
    else {         
       $('#favoritesdrinks').append('<li>'+$stuff+'</li>'); 
    }

  });
2 голосов
/ 06 августа 2009

$('#favoritesdrinks li').text() извлекает текст только первого сопоставленного элемента. Вместо прямого вызова text(), попробуйте зациклить результаты (используя each()) и установите некоторую переменную (например, found), если он найдет текст.

1 голос
/ 06 августа 2009

Я думаю, что причина, по которой он работает только на первом из-за вашего селектора:

var $inside = $('#favoritesdrinks li').text();

Это будет соответствовать всем

тегам, поэтому, когда вы добавите больше элементов в свой список, сравнение не будет работать. Возможно, вам повезет больше, если использовать селектор * :
var match = $('#favoritesdrinks li:contains(' + $stuff + ')');

if (match) {
    alert('Already added');
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...