You can just check the length of the child <li> elements of ul#Themes:

 $('#AddTheme').bind('click', function(){
         // Other code
         var len = $('#Themes li').length;
          $theme = $('<li class="Themes"></li>').appendTo
('#Themes');
          $theme.append('<input type="hidden" name="Themes['+len
+'].Subject"
value = "' + $subject.val() + '" />');
          $theme.append('<input type="hidden" name="Themes
['+len+'].LevelsCsv" value = "' + levelsTypes.join(",") + '" />');
          $theme.append('<input type="hidden" name="Themes
['+len+'].Description" value = "' + description.val() + '" />');
      });


On Feb 8, 8:13 am, Stephan Veigl <stephan.ve...@gmail.com> wrote:
> Hi Miguel,
>
> you could use a global counter.
> e.g.
>
>      var themesCounter = 0;
>      $('#AddTheme').bind('click', function(){
>         ...
>          $theme.append('<input type="hidden"
> name="Themes[themesCounter].Subject" value = "' + $subject.val() + '"
> />');
>         ...
>         themesCounter++;
>      });
>
> by(e)
> Stephan
>
> 2009/2/8 shapper <mdmo...@gmail.com>:
>
>
>
> > Hi,
>
> > I am adding list items to a list as follows:
>
> >      $('#AddTheme').bind('click', function(){
>
> >         // Other code
>
> >          $theme = $('<li class="Themes"></li>').appendTo
> > ('#Themes');
>
> >          $theme.append('<input type="hidden" name="Themes[0].Subject"
> > value = "' + $subject.val() + '" />');
> >          $theme.append('<input type="hidden" name="Themes
> > [0].LevelsCsv" value = "' + levelsTypes.join(",") + '" />');
> >          $theme.append('<input type="hidden" name="Themes
> > [0].Description" value = "' + description.val() + '" />');
>
> >      });
>
> > Basically, every time I add a new item I want to give the next number
> > to Themes[0], i.e., Themes[1].
>
> > If I add 3 themes I will have Themes[0], Themes[1], Themes[2]
>
> > Basically, I need to have at all times themes numbered as 0, 1, 2, ...
>
> > Could someone please help me out?
>
> > Thanks,
> > Miguel
>
> > Just in case, here is my entire code fully commented:
>
> >    $('#Cancel').click(function() { location.href = '/Account/
> > List'; });
>
> >    // Themes >>
>
> >      // Define remove event
> >      $('.Remove').livequery('click', function(event) {
> >        $(this).parent().remove();
> >      });
>
> >      // Bind add button
> >      $('#AddTheme').bind('click', function(){
>
> >        // Define valid
> >        var valid = new Boolean(true);
>
> >        // Define fields
> >        $description = $('#Description');
> >        $levels = $('input[name="Levels"]:checked + label');
> >        $levelsTypes = $('input[name="Levels"]:checked');
> >        $subject = $('#Subject option:selected');
>
> >        // Map levels
> >        levels = $levels.map(function() { return $(this).text(); }).get
> > ();
> >        levelsTypes = $levelsTypes.map(function() { return $(this).val
> > (); }).get();
>
> >        // Check subject
> >        if (!$subject.val()) { valid = false; }
>
> >        // Check levels
> >        if (!levels.length) { valid = false; }
>
> >        // Check boolean
> >        if (valid) {
>
> >          // Define theme
> >          $theme = $('<li class="Themes"></li>').appendTo
> > ('#Themes');
>
> >          // Add fields
> >          $theme.append($subject.text()).append('<br />');
> >          $theme.append( Levels(levels) + '<br />' );
> >          if ($description.val()) { $theme.append($description.val
> > ()).append('<br />'); }
>
> >          // Add button
> >          $theme.append('<a href="#Remove" class="Remove">Remover</
> > a>');
>
> >          // Add inputs
> >          $theme.append('<input type="hidden" name="Themes[0].Subject"
> > value = "' + $subject.val() + '" />');
> >          $theme.append('<input type="hidden" name="Themes
> > [0].LevelsCsv" value = "' + levelsTypes.join(",") + '" />');
> >          $theme.append('<input type="hidden" name="Themes
> > [0].Description" value = "' + description.val() + '" />');
>
> >          // Add input
> >          //$theme.append(' <input type="hidden" name="Themes" value =
> > "' + theme + '" />');
>
> >        }
>
> >      });
>
> >      // Levels
> >      function Levels(levels) {
>
> >        // Check levels
> >        if (levels.length < 2) return levels.join('');
>
> >        // Define first
> >        var first = levels.slice(0, -1), last = levels.slice(-1);
>
> >        // Define result
> >        var result = first.join(', ');
>
> >        // Check last
> >        if (last) { result += ' and ' + last; }
>
> >        // Return results
> >        return result;
>
> >      } // Levels

Reply via email to