how to distingush multiple ajax submit in single ajax callback
Last time I had to do this I used this method:

When creating the form create an array to hold deleted ids:

$form_state['deleted_items'] = array();


And give each remove button an ID relating to that items index:

$form['names_fieldset'][$i]['remove'][$i] = array(
    '#type' =&gt; 'submit',
    '#value' =&gt; t('Remove'),
    '#submit' =&gt; array('webinar_add_more_remove_one'),
    '#validate' =&gt;false,
    '#ajax' =&gt; array(
        'callback' =&gt; 'webinar_add_more_callback',
        'wrapper' =&gt; 'names-fieldset-wrapper',
    ),
    '#attributes' =&gt; array(
        'id' =&gt; 'item-'.$i,
    ),
);


Then in webinar_add_more_remove_one check the id of the button that was pressed:

function webinar_add_more_remove_one($form, &amp;$form_state) {
    $form_state['deleted_items'][] = str_replace('item-', '', $form_state['clicked_button']['#attributes']['id']);
    $form_state['rebuild'] = TRUE;
}


And then when building the form check the array of deleted items:

for ($i=0; $i &lt; $form_state['num_names']; $i++) {

    if(in_array($i, $form_state['deleted_items']) continue;

    // rest of code....
}


You will also need to check the deleted item array in the submit and validate functions as we don't actually removed the deleted item from the $form_state array.