Hallo,
als ik met jQuery een item van een list verwijderen, en er zijn geen list items meer over (dus een list zonder children), dan werkt $("ul:empty").remove() niet meer, omdat ul.remove() niet de spaties voor het element weg haalt. Is hier een optie voor om spaties en enters niet mee te tellen?

PS: probeer me geen mootools aan te smeren ofzo..
Mootools all the way =]
Ik begrijp het niet helemaal. Wat wil je? Er zijn geen li's meer, maar wat wil je dan nog verwijderen?
Misschien dat je jouw probleem ook kan oplossen door te tellen.

$('ul').children().size();

Hiermee tel je het aantal children.
Dan kun je iets als het volgende doen

var aantal  = $('ul').children().size();
if(aantal == 0)
{
actie
}
else
{
andere actie
}
	$("a[href^=#d]").click( function () {
									  var id = $(this).attr("href").substr(3);
									  if ($(this).parent().parent().parent().children().size() == 1) {
										  $(this).parent().parent().parent().prev().remove();
										  $(this).parent().parent().parent().remove();
									  } else {
									  	  $(this).parent().parent().remove();
									  }
									  $("div.current-version").addClass("current-view");
									  $.post('/games/updateHistory/deleteVersion/' + id + '/');
									  } );

Het werkt, dit heb ik er uiteindelijk van gemaakt. Bedankt!
Heb je een voorbeeldje van wat je wil?

Ik kan me voorstellen (het is iets complexer, maar werkt ook):

Optie een: de workaround

$('ul').each(function ()
{
  if ($(this).children().size() == 0)
  {
    $(this).remove();
  }
});


Optie twee: jQuery extenden met een no-children selector:


jQuery.extend(
  jQuery.expr[ ":" ],
  {
    nochildren : function (a) {
      // a is een DOM object
      // deze functie geeft TRUE terug als er minder dan 1 child zitten - anders false (niet leeg)
      size = jQuery(a).children().size();
      return size < 1;
    }
  }
); 

nu werkt:

$('ul:nochildren').remove();


Success ermee

Reageren