У меня есть простой промежуток как так
<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>
Затем просто разделите 'мою' часть из идентификатора, но это просто кажется Гоготом!
Ниже мое событие щелчка и где мое событие 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");
Я хочу смочь передать больше чем одну информацию
Спасибо. Jake.
Если вы настаиваете на использовании устаревшего 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
может начинаться с числа или даже быть число .
Опять же, если вы все равно используете HTML5, вам, вероятно, лучше использовать специальные атрибуты данных, например:
<span class="action removeAction" data-id="1">Remove</span>
$ (this) в вашей функции щелчка представляет собой выбранный элемент
$(".removeAction").click(function() {
//AJAX here that needs to know the ID
alert($(this).attr('id'));
}
Следующий код получит ID нажатого span
. Использование ID не идеально, но это сработает.
$(".removeAction").click(function() {
alert($(this).attr("id"));
});
Вы можете попробовать jQuery.data(): http://api.jquery.com/jQuery.data , но это будет означать сгенерированный на стороне сервера js-код, который будет выполняться при загрузке страницы, чтобы вы могли сохранить идентификаторы для последующего повторного использования (ваше действие remove)
// 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
});
});
У вас может быть скрытое поле в каждой строке, которое хранит идентификатор и / или другие данные, необходимые в объекте 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...
});
HTH