2015-01-10 2 views
0

Что мне нужно сделать, это получить «.clippy» класс, чтобы быть моим селектор, просто не селектор никаких событий, но, кажется, что он не работаетПолучение динамически сгружен селектор

Как я могу получить селектор из Ajax ответ элемент

Если я сделаю это $('body').on('event', '.clippy', func(){}), это, безусловно, работает, но что делать, если мне нужно только селектор, как этот $('.clippy'), чтобы проверить селектор Я попытался $('.clippy').click(function(){ alert(1)}), но он не работает

Мне нужно только селектор из-за интеграции его в плагин, плагин нужен только селектор lik е так $('.clippy')

$.ajax({ 
      type: 'POST', 
      url: '{{ url('multiple-show-links') }}', 
      data: { ids: val }, 
      success: function(i) { 
       $('#holder').html(''); 

       var html = '', datos = [], ctr = 0; 
       $.each(i, function (x) { 
        html += '<div class="uploaded-file-popup-holder">' + 
           '<div class="uploaded-file-name">' + 
            i[x].main_title + 
           '</div>' + 
          '<div class="uploaded-file-info-hoder">' + 
          '<table class="table table-bordered showlinks">' + 

          '<tr>' + 
           '<td class="col-red" width="168">Download Link:</td>' + 
           '<td class="b_1" id="link_download_' + ctr +'">' + i[x].url_download + '</td>' + 
           '<td id="copy_download" class="align-center valign-middle"><span id="c_1" class="clippy" data-text="' + i[x].url_download + '" data-clipboard-target="link_download_' + ctr +'">COPY</span></td>' + 
          '</tr>' + 

          '</table></div></div>'; 
        ctr++;   
       }); 

       $('#holder').html(html); 
      } 

     }); 
+1

Я бы предположил, что селектор на самом деле не проблема. Оба варианта действительны и имеют смысл. Может быть, вы пытаетесь реагировать на событие на динамически загружаемом элементе? В этом случае ваша проблема заключается в том, следует ли использовать функцию 'on()' или 'click()'. Для отладки вашей проблемы, вероятно, имеет смысл использовать консоль отладки браузеров для регистрации того, что на самом деле выбирают два селектора. – arkascha

+0

плагинам все равно, какой селектор вы используете ... все равно вернет коллекцию элементов DOM. Инициализировать плагин после вставки html – charlietfl

+0

@charlietfl Это может стать довольно сложным при работе с несколькими динамическими элементами на странице. Установка обработчика событий тегом body является хорошим вариантом. – feeela

ответ

0

Ошибка при установке обработчика событий.

Во втором случае вы установите обработчик события на селектор, который не существует в данный момент. Таким образом, никакой обработчик событий не задан.

$('.clippy').click(function(){ alert(1)}) 

В первом случае используется глобальный обработчик события к уже существующему body элемента.

$('body').on('event', '.clippy', func(){}) 

Обработчик событий существует и останется там. Если пользователь нажимает, обработчик события не запускается, потому что был нажат на .clippy, но из-за щелчка на элементе body. Но jQuery выполнит только обратный вызов, если выбран селектор, указанный во втором аргументе.

Это обычный способ использования обработчика событий на веб-сайтах, которые динамически добавляют HTML-код на страницу (например, после вызова AJAX).

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