tags:

views:

57

answers:

3

I have built a <ul> list and it is being populated with <li id="subsitem"> from a jQuery function. I am trying to build a click function so that whenever one of those <li>'s is clicked, it disappears. I'm using the slideUp() function.

Here is my code:

$("#subsitem").click(function() {
  // Act on the event
  $(this).slideUp();
}); 

This doesn't work, yet when i change it to

$("li").click(function() {
  // Act on the event
  $(this).slideUp();
}); 

It works, but the only problem then is it works on all my <li>s. Anyone any tips?


update

Here is the code that is being used inside an .each()

$("#subs").append("<li><a href='#' class='subsitem'><div class='favicon'><img src='icon.png' width='16' height='16'></div>title</a></li>");
+4  A: 

The problem is the first one is identifying by ID, which should be unique. You can change it to a class, and add the class to each li, to make it work.

$(".subitem").click(function() {
    // Act on the event
    $(this).slideUp();
}); 
Robert
I tried that still no luck.
ChrisMJ
i know the code works, because if i create another list on the same page with the li and class, then the code works fine, its almost like my first ul list is bugged
ChrisMJ
You need to append `$("#subs").append("<li class='subitem'><a href='#' class='subsitem'><div class='favicon'><img src='icon.png' width='16' height='16'></div>title</a></li>");` for my code to work. The difference being the `<li>` having subitem as the class.
Robert
A: 

What about doing something like:

$("#subsitem").click(function(){
    $(this).parent().slideUp();
});

To bind it to the parent <li> of the <a> that is clicked.

Chris
+1  A: 

Ok having used the jquery irc channel i managed to get the answer i was looking for.

I needed to use the .live() function. This is what my code now looks like

$("#subsitem").live('click',function(){
$(this).parent().slideUp();});
ChrisMJ
Upon investigation, that is exactly what you needed to do :) Thanks for the update, can you accept your own answer?
Chris
Yea I will do, once it allows me
ChrisMJ