代码之家  ›  专栏  ›  技术社区  ›  dennismonsewicz

使用jquery删除dom元素

  •  1
  • dennismonsewicz  · 技术社区  · 14 年前

    我有一个自定义错误脚本,如果用户试图提交表单,但未通过验证,该脚本将在页面上显示自定义错误消息。

    在输入元素(验证失败的输入)的focusout上,我试图删除我添加的dom元素,但它删除了页面上所有具有我指定的类名的dom元素。

    添加dom元素:

    $('#' + el).closest('tr').addClass('pink_bg');
    var error_txt = $('#' + el).attr('rel');
    $('#' + el).before('<span class="registration_error_message">' + error_txt + '</span>');
    

    尝试删除dom元素(这将删除class=“registration_error_message”的所有dom元素),我只想删除其中一个元素:

    $("#" + el).focusout(function(){
        $(this).parent().remove('[class^=registration_error_message]');
        $(this).closest('tr').removeClass('pink_bg red_border');
    });
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   user113716    14 年前

    因为你添加了 .registration_error_message 元素之前 el 元素使用 jQuery's .before() method ,你似乎想 use .prev() 而不是 using .parent() 拆卸时。

    $(this).prev().remove('[class^=registration_error_message]');
    

    $(this).prev('[class^=registration_error_message]').remove();
    
        2
  •  2
  •   Nick Craver    14 年前

    您可以使用不同的遍历方法来获取所需的内容。因为你将它添加为以前的兄弟姐妹 .before() 使用 .siblings() 用一个 .class selector ,如下所示:

    $(this).siblings('.registration_error_message').remove();
    //or more specific:
    $(this).prev('.registration_error_message').remove();