Javascript 如何隐藏由AJAX调用生成的DIV?

Javascript 如何隐藏由AJAX调用生成的DIV?,javascript,jquery,Javascript,Jquery,我有一个关闭DIV的简单脚本。示例如下: 然而,我的问题是DIV“box”仅在ajax调用之后生成,ajax调用是搜索php脚本的一部分 你知道我需要什么来让这一切顺利吗?类似的问题:.live会有帮助:) 但您也可以在默认情况下显示div,并将其设置为display:none,然后在有人进行搜索时立即切换div a….live将帮助:) 但您也可以在默认情况下显示div并将其设置为display:none,然后在有人进行搜索时立即切换div a…尝试将其更改为 $(function(){

我有一个关闭DIV的简单脚本。示例如下:

然而,我的问题是DIV“box”仅在ajax调用之后生成,ajax调用是搜索php脚本的一部分

你知道我需要什么来让这一切顺利吗?类似的问题:

.live会有帮助:)

但您也可以在默认情况下显示div,并将其设置为display:none,然后在有人进行搜索时立即切换div a…

.live将帮助:)

但您也可以在默认情况下显示div并将其设置为display:none,然后在有人进行搜索时立即切换div a…

尝试将其更改为

$(function(){
    $("div.box a.close").live("click", function() {
        $(this).parent("div.box").fadeOut();
    });
});
用于支持事件处理程序,也可在加载dom后使用。

尝试将其更改为

$(function(){
    $("div.box a.close").live("click", function() {
        $(this).parent("div.box").fadeOut();
    });
});

用于支持事件处理程序,也是在加载dom之后。

这通常取决于您希望它何时隐藏

例如,您可以使用

$('.select').live('click',function (){
    $('div').hide();
});
您也可以使用委托


此外,您还可以在ajax成功时使用它,如果有必要,这通常取决于您希望它何时隐藏

例如,您可以使用

$('.select').live('click',function (){
    $('div').hide();
});
您也可以使用委托


此外,如果需要,您可以在ajax成功上使用它,因为元素是动态创建的,所以您必须在或委托上使用它,即使在动态添加元素时也会触发事件

$(function(){
    $(document).on("click", "div.box a.close", function() {
        $(this).parent("div.box").fadeOut();
    });
});
on()
参考:JQuery 1.7版+

使用
委托

$(function(){
    $(document).delegate("div.box a.close", "click", function() {
        $(this).parent("div.box").fadeOut();
    });
});
delegate()
参考:


由于元素是动态创建的,因此您必须在上使用
委托
,即使在动态添加元素时也会触发事件

$(function(){
    $(document).on("click", "div.box a.close", function() {
        $(this).parent("div.box").fadeOut();
    });
});
on()
参考:JQuery 1.7版+

使用
委托

$(function(){
    $(document).delegate("div.box a.close", "click", function() {
        $(this).parent("div.box").fadeOut();
    });
});
delegate()
参考:


使用AJAX动态插入元素时,使用原始
.bind()
注册的任何处理程序。click()
方法将不起作用,因为它们只对当时已在DOM中的元素起作用

您需要:

  • 将内容添加到DOM后重新注册处理程序,或
  • 使用(如果您使用jQuery 1.7+)注册一个“活动”处理程序,该处理程序甚至可以在注册处理程序后创建的元素上工作
  • e、 g:


    如果使用1.7之前的jQuery,请改用
    .live()

    使用AJAX动态插入元素时,使用原始
    .bind()
    注册的任何处理程序。click()
    方法将不起作用,因为它们只作用于DOM中当时已经存在的元素

    您需要:

  • 将内容添加到DOM后重新注册处理程序,或
  • 使用(如果您使用jQuery 1.7+)注册一个“活动”处理程序,该处理程序甚至可以在注册处理程序后创建的元素上工作
  • e、 g:


    如果在1.7之前使用jQuery,请改用
    .live()

    下面的Javascript应该可以工作,它使用jQuery的委托函数,因为在jQuery中不推荐使用live

    $("#searchresultdata").delegate("a.close", "click", function() {
        $(this).closest("div.box").fadeOut();
    });
    

    下面的Javascript应该可以工作,它使用jquery的委托函数,因为在jquery中不推荐使用live

    $("#searchresultdata").delegate("a.close", "click", function() {
        $(this).closest("div.box").fadeOut();
    });
    

    你需要对事件进行分析。对于您的站点,请使用以下代码:

    $('#searchresultdata').delegate('div.search-sbox a.close', 'click', function() {
        $(this).parent("div.search-sbox").fadeOut();
    });
    

    你需要对事件进行分析。对于您的站点,请使用以下代码:

    $('#searchresultdata').delegate('div.search-sbox a.close', 'click', function() {
        $(this).parent("div.search-sbox").fadeOut();
    });
    

    #searchresultdata{display:none}:)35; searchresultdata{display:none}:)
    .live()
    从jQuery 1.7开始就不推荐使用。live()从jQuery 1.7开始就不推荐使用委托。非常感谢您的帮助。使用代理非常有效。非常感谢你的帮助。