jQuery:在每个()中使用live()

时间:2010-12-19 16:29:59

标签: jquery

我在这里有这个功能:

$("a.fancybox_vid").each(function(){
   $(this).fancybox({
    titleShow     : false,
    width:    640,
    height:   395,
    autoDimensions: false,
    overlayOpacity: 0.6,
    href: "misc/mc.php?v="+$(this).attr('id')
  }); 
});

现在附加了一个包含c lass .fancybox_vid的链接,然后这将无效。只有从一开始就存在。我怎么能在每个()中都有live()。

3 个答案:

答案 0 :(得分:4)

如果您想要方法的“类似实时”功能,可以使用the livequery plugin

$(function() {
    $('a.fancybox').livequery(function() {
        $(this).fancybox({
            titleShow     : false,
            width:    640,
            height:   395,
            autoDimensions: false,
            overlayOpacity: 0.6,
            href: "misc/mc.php?v="+$(this).attr('id')
        });
    });
});

...虽然在新创建的元素上调用fancybox插件会更好(更少开销)。

答案 1 :(得分:0)

这是不可能的,因为live处理事件。仅限Fancybox 在当前元素队列上创建事件。

我认为每次创建新元素时都必须应用.fancybox()方法。

答案 2 :(得分:0)

做一个叫做fancybox的直播活动怎么样:

$("a.fancybox_vid:not(.fancy)").live('click', function(){
 $(this).addClass('fancy').fancybox({
  titleShow     : false,
  width:    640,
  height:   395,
  autoDimensions: false,
  overlayOpacity: 0.6,
  href: "misc/mc.php?v="+$(this).attr('id')
 }); 
});