2016-04-13 24 views
1

我需要触发器来动态创建元素,然后使用事件绑定来获取事件并删除动态元素。将自定义触发器添加到动态创建的元素

<div class="row"> 
    <div class="col-md-8 clickable"></div> 
    <div class="col-md-4 display-clicks"> 
     <ul class="clicks"> 
     </ul> 
    </div> 
</div> 

所以可以说我们有显示内点击上面的HTML DIV该UI被附加了坐标列表中点击可点击股利和旁边的每个一个删除按钮。可点击的div使用动态创建的跨度进行填充,所有这些跨度都有一个唯一的ID,它只是点击的连接坐标。我可以删除包含坐标和按钮所附丽使用:

$('.display-clicks').on('click','button',function(){ 
     // and this gets me the id of the dynamic span to be removed 
     // from the clickable div 
     var id = $(this).data('span-id'); 

     // this wont work 
     $(id+'_span').remove(); 

     // neither will this 
     $(id+'_span').trigger('myEvent'); 

     $(this).parent().remove(); 
     console.log(id); 
    }) 

myEvent看起来像这样

$('.clickable').on('myEvent', 'span', function(event){ 
     $(this).remove(); 
    }) 

任何想法?

+1

'$( '点击' )=> $('。clickable')' –

+0

是啊对不起,这只是一个错字.clickable是在真实的代码 – futureweb

+0

什么动态附加'HTML'看起来喜欢? –

回答

1

$(this).parent().remove(); 也会删除this元素,因为您要删除它的父级。因此无法定义id,您无法选择您的跨度。将该行放在块的末尾。另外你的ID不能以数字开头 - http://www.w3schools.com/tags/att_global_id.asp

+0

我可以看到它看起来这样我实际上将id转换为一个变量之前删除父母,我可以console.log它后尝试删除span和li我将编辑问题代码。 – futureweb

+0

也不要在'id'的值开头使用数字,你可以在第一个字符之后使用它们 - 应该是一个字母 –

+0

非常奇怪我的代码似乎能正常工作,但不在我的开发机器上对不起 – futureweb

0

试试这个:

$('.clickable').on('myEvent', 'span', function(event){ 
     $(this).remove(); 
    }) 

,你的功能是这样的:

$('.display-clicks').on('click','ul',function(){ 
     $(this).parent().remove(); 
     // and this gets me the id of the dynamic span to be removed 
     // from the clickable div 
     var id = $(this).data('span-id'); 

     // this works now 
     $("#" + id+'_span_just_remove').remove(); 

     // this works too 
     $("#" + id +'_span_trigger').trigger('myEvent'); 
    }) 

Plunker:https://plnkr.co/edit/ocZv95B3wBifX5zK7ob4?p=preview

相关问题