0

我又来这里寻求帮助,我会很感激建议。

我有一个小项目要做。那么我需要的是使用 jQuery 来查找所有具有类刷新的 span 元素,并将单击处理程序附加到其直接父级。我可以使用 jQuery 的 bind(),但我们知道它不适用于将来添加的元素。如果我在过去的黄金时代,我会使用 live() 但由于它已被弃用,我不能使用它。

我的另一个选择是使用委托函数,但使用委托函数我无法传递选择器参数。

这是我的小提琴。http://jsfiddle.net/ardeezstyle/hRhT7/2/

$('.refresh').parent().bind('click',function(){
             $(this).css({'position':'relative','background':'#fff'}).append('<span>').find('span:last').addClass('refreshing');

        _this=$(this);
    setTimeout(function(){
        _this.removeAttr('style').find('span.refreshing').remove();
    }, 1000);

});

我将不胜感激任何帮助。

干杯!

4

2 回答 2

1

用于委托事件

var parentID=$('.refresh').parent().attr('id'); // using id of parent.. you can get any attributes of parent here...if id is not present..
$(document).on('click','#'+parentID,function(){
   $(this).css({'position':'relative','background':'#fff'}).append('<span>').find('span:last').addClass('refreshing');

    _this=$(this);
   setTimeout(function(){
    _this.removeAttr('style').find('span.refreshing').remove();
   }, 1000);

});

最好使用文档中最近的静态父容器,然后使用文档本身以获得更好的性能。链接以阅读有关事件的更多信息

于 2013-04-30T07:01:49.800 回答
0

由于类的父级没有选择器,因此您必须将处理程序委托给每个元素,并在事件发生时检查它是否是父级。

$(document).on('click', '*', function() {
    if ($(this).children('.refresh').length) {
       // do stuff
    }
});
于 2013-04-30T09:26:37.340 回答