Thursday 11 July 2019

javascript - How to find if div with specific id exists in jQuery?



I’ve got a function that appends a

to an element on click. The function gets the text of the clicked element and assigns it to a variable called name. That variable is then used as the
id of the appended element.




I need to see if a

id with name already exists before I append the element but I don’t know how to find this.



Here is my code:



$("li.friend").live('click', function() {
name = $(this).text();

// if-statement checking for existence of
should go here
// If
does not exist, then append element

$("div#chatbar").append("
" + name + "
");

// Else
alert('this record already exists');
});


This seems pretty straightforward but I’m getting the error “Unexpected end of file while searching for class name”. I have no clue what that means.



if (document.getElementById(name)) {

$("div#" + name).css({bottom: '30px'});
} else {
$("div#page-content div#chatbar").append("
" + name + "
");
}


What’s more is that I want to be able to delete this element if I close it out which should then remove the div id [name] from the document but .remove() does not do this.



Here is the code for that:




$(".mini-close").live('click', function(){
$(this).parent().remove();
});


I added .mini-close to the append function as a child of .labels so there was a way to close out of the appended

if needed. After clicking .mini-close and attempting to click the same name again from li.friends it still finds the div id [name] and returns the first part of my if statement.


Answer



You can use .length after the selector to see if it matched any elements, like this:



if($("#" + name).length == 0) {

//it doesn't exist
}


The full version:



$("li.friend").live('click', function(){
name = $(this).text();
if($("#" + name).length == 0) {
$("div#chatbar").append("
" + name + "
");

} else {
alert('this record already exists');
}
});


Or, the non-jQuery version for this part (since it's an ID):



$("li.friend").live('click', function(){
name = $(this).text();

if(document.getElementById(name) == null) {
$("div#chatbar").append("
" + name + "
");
} else {
alert('this record already exists');
}
});

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...