Передача данных в функцию 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
});
});