获取动态获取的选择器

时间:2015-01-10 20:16:07

标签: jquery

我需要做的是让'.clippy'类成为我的选择器,只是选择器没有事件,但似乎它不起作用

如何从ajax响应元素中获取选择器

如果我执行此操作$('body').on( 'event', '.clippy', func(){} ),它肯定有效,但如果我只需要像$('.clippy')这样的选择器,为了测试我尝试$('.clippy').click(function(){ alert(1)})的选择器,但它不起作用

我只需要选择器,因为它将它集成在一个插件上,插件只需要这样的选择器$('.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 个答案:

答案 0 :(得分:0)

错误是您设置事件处理程序时。

在第二步中,您将事件处理程序设置为当前不存在的选择器。因此,没有设置事件处理程序。

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

在第一种情况下,您使用附加到现有body元素的全局事件处理程序。

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

事件处理程序存在并将保留在那里。如果用户点击,则事件处理程序不会触发,因为.clippy上有点击,但因为点击了body元素。但是,如果指定为第二个参数的选择器匹配,jQuery将只执行回调。

这是在向网页动态添加HTML的网站中使用事件处理程序的常用方法(例如,在AJAX调用之后)。