Передача данных в функцию jQuery click () - PullRequest
14 голосов
/ 10 мая 2010

У меня есть простой промежуток, подобный следующему:

<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");

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

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

Ответы [ 5 ]

14 голосов
/ 10 мая 2010

Если вы настаиваете на использовании старой школы 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>
3 голосов
/ 10 мая 2010

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

$(".removeAction").click(function() {
    //AJAX here that needs to know the ID
    alert($(this).attr('id'));           
}
1 голос
/ 10 мая 2010

В каждой строке может быть скрытое поле, в котором хранится идентификатор и / или другие данные, необходимые для объекта 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...
});

НТН

1 голос
/ 10 мая 2010

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

$(".removeAction").click(function() {
  alert($(this).attr("id"));
});
0 голосов
/ 10 мая 2010

Вы можете попробовать 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
   });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...