Передача данных в функцию jQuery click()

У меня есть простой диапазон, например,

<span class="action removeAction">Remove</span>

Этот диапазон находится внутри таблицы, каждая строка имеет диапазон удаления.

И затем я вызываю URL-адрес с помощью AJAX при нажатии этого диапазона. Событие AJAX должно знать идентификатор объекта для этой строки? Каков наилучший способ получить этот идентификатор в функции щелчка?

Я думал, что смогу сделать что-то вроде этого

<span class="action removeAction" id="1">Remove</span>

Но идентификатор не должен начинаться с числа? Правильно? Тогда я думал, что смогу сделать

<span class="action removeAction" id="my1">Remove</span>

Затем просто отделите "мою" часть от ID, но это просто кажется Yuk!

Ниже приведено мое событие click и где мое событие AJAX.

<script type="text/javascript" language="text/javascript">

$(document).ready(function()
{

    $(".removeAction").click(function()
    {
        //AJAX here that needs to know the ID            
    }
});

</script>

Я уверен, что есть хороший способ сделать это?

Примечание. Я не ищу

$(this).attr("id");

Я хочу иметь возможность передавать более одной части информации

Спасибо. Джейк.

Ответы

Ответ 1

Если вы настаиваете на использовании старой версии HTML 4.01 или XHTML:

$('.removeAction').click(function() {
 // Don’t do anything crazy like `$(this).attr('id')`.
 // You can get the `id` attribute value by simply accessing the property:
 this.id;
 // If you’re prefixing it with 'my' to validate as HTML 4.01, you can get just the ID like this:
 this.id.replace('my', '');
});

Кстати, в HTML5 атрибут id может начинаться с числа или даже be числа.

И снова, если вы все равно используете HTML5, вам, вероятно, лучше использовать пользовательские атрибуты данных, например:

<span class="action removeAction" data-id="1">Remove</span>

Ответ 2

$(this) в пределах вашей функции щелчка представляет элемент с щелчком

$(".removeAction").click(function() {
    //AJAX here that needs to know the ID
    alert($(this).attr('id'));           
}

Ответ 3

В следующем коде вы получите идентификатор щелкнутого span. Использование идентификатора не является идеальным, но оно будет работать.

$(".removeAction").click(function() {
  alert($(this).attr("id"));
});

Ответ 4

У вас может быть скрытое поле в каждой строке, в котором хранятся идентификатор и/или другие данные, необходимые в объекте JSON, и использовать это вместо взлома с тегом span.

<tr>
<td>
<span class="action removeAction">Remove</span>
<input type="hidden" value="1" />
</td>
</tr>

$('.removeAction').click(function(){
  var id = $(this).next().val();
  // do something...
});

НТН

Ответ 5

Вы можете попробовать jQuery.data(): http://api.jquery.com/jQuery.data, но это означало бы, что код js на стороне сервера должен выполняться, когда чтобы вы могли сохранить идентификаторы для последующего повторного использования (действие удаления)

// this part would have to be server 'generated'
// and by that I'm referring  to the '<?=$row_id?>'
$('table .remove').each(function(){

   var MyElem = $(this);
   MyElem.data('id', <?=$row_id?> );

   MyElem.click(function(){
      the_id = $(this).data('id');
      // ajax call goes here
   });

});