views:

142

answers:

1

The following code works, but I'm sure there is a more compact way to achieve the same result, particularly the string replacement:

$('#nav-main .nav-sub').each(function() {

 var name = $(this).attr('id');

 $(this).children('li').children('a').each(function() {

  var text = $(this).text().toLowerCase();
  var spaces = / /g;
  var sub = /sub-/;
  var id = name + '-' + text.replace(spaces, '-'); 
  var id = id.replace(sub, '');  
  $(this).attr('id', id);

 });

});
+1  A: 
$('#nav-main .nav-sub').each(function() {
    var name = $(this).attr('id');
    $('li a', this).each(function() {       
        this.id = (name + '-' + $(this).text().toLowerCase().replace(/\s/g, '-')).replace(/sub-/, '');
    });
});
J-P