是否存在可以检测到存在的JQuery事件?

时间:2011-10-08 01:39:02

标签: jquery ajax live

我正在使用ajax调用来渲染部分。问题是,当调用结束时,我的jquery代码仅适用于新插入的HTML 我使用live()方法(据我所知)。

我已经成功地将live()方法用于那些附加了“click”事件的选择器。例如:

$('.course_name_click').live('click', function(e) {
    $(this).closest('div').next().slideToggle('slow');
    e.preventDefault();
 });

但我不确定如何将live()用于简单的hide()函数。也就是说,我想在首次出现时隐藏HTML代码段。我认为load()可能有效,但事实并非如此。有什么建议吗?

$('.descrip_body').live('load', function(e) {
    $('.descrip_body').hide();
});

为了清楚起见,我想转换

$('descrip_body').hide();

到使用live()的版本。


在回答时,尝试将hide()回调附加到AJAX请求。但它仍然无效(即相关的HTM1未被隐藏)。这是代码:

$("#courses_body").html("<%= escape_javascript(render :partial => 'courses') %>", function() {
    $('.descrip_body').hide();
});

3 个答案:

答案 0 :(得分:3)

两个问题:

1-你不能用已经有display:none风格的类加载你的html吗?

2-您是否可以将$('.descrip_body').hide();代码放在成功回调函数上?

我知道这不完全是你所问的,但它们也可以起作用......

答案 1 :(得分:1)

看起来你实际上没有AJAX请求 - 一个AJAX请求会命中一个特定的URL,从URL返回标记,并触发一个“success”方法作为回调。 jQuery使用$ .ajax,$ .post和$ .get来执行此操作。

$ .html更直接 - 它会立即向DOM注入一串标记。这就是你正在使用的,因为Rails partial将该字符串直接放入你的$ .html()参数中。

所以,从我收集的内容来看,你实际上不应该需要回调或任何类型的事件,因为你所做的不是异步的......你不必等待让您的标记出现在页面上;你可以注入它并开始操作它。尝试:

$("#courses_body")
  .html("<%= escape_javascript(render :partial => 'courses') %>")
  .find(".descrip_body")
  .hide();

答案 2 :(得分:0)

首先如何加载HTML代码段?为什么不在AJAX调用返回时隐藏它?