Skip to main content

JQUERY Prepending an LI to an UL with Animation


I have a UL and I'm working to dynamically add a new LI to the top of the UL with some animation.



I have the following so far which works ok:




$("#container").prepend('<li id="newhere"><input type="checkbox" /><span class="listTitle">Im new here</span><ul></ul></li>').hide().slideDown("slow");



#container is the UL



The problem with the above is that is hides the entire UL and then slides the entire UL down and I just want the NEW LI that was prepended to animate.



Ideas? thxs


Source: Tips4allCCNA FINAL EXAM

Comments

  1. You can do what you want a bit easier using .prependTo() and $(html), like this:

    $('<li id="newhere"><input type="checkbox" /><span class="listTitle">Im new here</span><ul></ul></li>')
    .hide().prependTo('#container').slideDown("slow");


    You can see a demo of the above code here

    .prepend() returns the element you prepended to, not the element or elements that were prepended. Switching it around to .prependTo() makes it a bit cleaner and should have the effect you want, since you can continue chaining on the elements you prepended. Also, if you're using the same string many times, this will now cache the document fragment and make it faster as well :)

    One last thing, if you're doing this multiple times, make sure that ID on the <li> is unique, or you're creating invalid HTML which will have some unwanted side effects.

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.