1

当用户更改单选按钮时,我将更新消息添加为表格行。我遇到了这样一个事实,即一旦添加了消息,它就没有我认为的功能,因为它是在页面加载后添加的。然后我发现 livequery 插件似乎允许事后添加的元素具有与页面加载的元素相同的功能。

我的 click fadeout() 工作正常,但我似乎无法弄清楚刚刚添加的表格行上的 setTimeout() 语法。我知道当前的语法不正确,我把它留在了我感到沮丧的地方。

<script>
  $(document).ready(function(){  
    $("input[@name='optInOut']").change(function(){
        $('#tblUpdates').append('<tr class="msgUpdate"><td colspan="2">added message0</td><td align="right"><img src="../Images/CCC/12-em-cross.png" class="imgClose" alt="close message" title="close message" /></td></tr>');
    });

    setTimeout($.livequery.function() {  
        $('.msgUpdate').fadeOut('normal');  
        }, 1000); // <-- time in milliseconds
    });

    $('img.imgClose').livequery('click', function(){
        $(this).parent().parent().fadeOut('normal');
  }); 
</script>

如果我需要提供更多信息,我会尝试这样做,并提前感谢您的帮助。

4

4 回答 4

2

首先在这里

     $('img.imgClose').livequery('click', function(){
        $(this).parent().parent().fadeOut('normal');
}); 
</script>

应该

     $('img.imgClose').livequery('click', function(){
        $(this).parent().parent().fadeOut('normal');
     });//<--- closes the livequery call
});//<--- closes document.ready
</script>

其次,我建议不要使用 livequery 来使用 fadeOut,但如果您要使用它,请使用以下语法:

setTimeout($.livequery.function() {  
        $('.msgUpdate').fadeOut('normal');  
        }, 1000); // <-- time in milliseconds
    });

应该:

$.livequery(function(){
  setTimeout(function(){
     $('.msgUpdate').fadeOut('normal'); 
  },1000);
});
于 2009-10-15T21:46:42.297 回答
0

你不需要调用window.setTimeout 吗?我不确定这是否有必要,但可能值得一试。

于 2009-10-15T19:28:56.530 回答
0

使用最新版本的 jQuery (1.3.X),您不需要使用 livequery 插件。您可以只使用 $("div").live("click" 等......

我认为,如果您查看 jQuery 的新实时功能,您可能能够清理您的 Javascript,使其更易于理解。

于 2009-10-15T20:03:46.087 回答
0

如果 setTimeout 的目标是淡化页面加载时存在的元素,那么您不需要涉及 livequery

setTimeout("$('.msgUpdate').fadeOut('normal');", 1000);
于 2009-10-15T20:47:52.920 回答