开发者

Removing DOM element using jQuery

开发者 https://www.devze.com 2023-01-18 12:07 出处:网络
I have a custom error script that displays custom error messages on a page if a user tries to submit a form and it fails validation.

I have a custom error script that displays custom error messages on a page if a user tries to submit a form and it fails validation.

On the focusout of the input element (the input that failed validation) I am trying to remove the DOM element I added, but its removing all of the DOM elements with the class name I specify that exist on the page.

Adding the DOM element:

$('#' + el).closest('tr').addClass('pink_bg');
var error_txt = $('#' + el).attr('rel');
$('#' + el).before('<span class="regist开发者_JS百科ration_error_message">' + error_txt + '</span>');

Attempting to remove the DOM element (this removes all of the DOM elements of class="registration_error_message"), all I want to do is remove one of the elements:

$("#" + el).focusout(function(){
    $(this).parent().remove('[class^=registration_error_message]');
    $(this).closest('tr').removeClass('pink_bg red_border');
});


Since you're adding the .registration_error_message element before the el element using jQuery's .before() method, it would seem that you want to use .prev() instead of using .parent() when removing.

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

Or

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


You can use a different traversal method to get what you're after. Since you're adding it as a previous sibling with .before(), use .siblings() with a .class selector, like this:

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

精彩评论

暂无评论...
验证码 换一张
取 消