问题描述:

So ... I know how to fadeout an item added to the dom (A success/error message in this case), but the way I'm doing it now is by writing the code to fadeout the specific item I need when it is loaded with the DOM, but also writing seperate fadeOut code when the item is added via AJAX.

Is there a more elegant way to handle this?

I looked into using the .live() handler but that requires an event be passed in as one of its parameters (not good because I just want the item to fade out after a set amount of time, no matter what).

tldr; I'm trying to write a piece of code that will fadeOut an item whether it loads with the DOM or is added to it (via AJAX for example).

网友答案:

Use the livequery plugin.

$(".fadeOut").livequery(function(){$(this).fadeOut()});
网友答案:

when you add the divs to the dom, assign a class for e.g

<div ...class="your_usual_class fadeout_category other_classes"...>

So now all objects that belong to the fadeout_category can be easily faded with a command

$(".fadeout_category").apply_fadeout;

网友答案:

The most "elegant" solution to your problem would not be to use .live, which listens to a particular DOM node for changes (always use a context for your selector; the callbacks can slow down a complicated page substantially) and then just applies a normal callback assuming the selector conditions are met.

You would want to include the fadeOut with the function that makes the item appear in the first place.

namespace.showMessage = function(message) {
  $('<div class="message">').text(message).appendTo('body').fadeOut(function(){
    $(this).remove();
  });
}
相关阅读:
Top