элемент события jquery - PullRequest
       17

элемент события jquery

0 голосов
/ 14 января 2010

У меня есть этот код:

    $(".testing").sortable({
        helper: fixHelper,
        containment:$("testing").parent(),
        start:function(){
            if($(event.target).hasClass("test")){
                alert("hello");
            }
            if($(this).hasClass("test")){
                alert("hello");
            }
        }
}); 

Я пытаюсь сделать таблицу сортируемой. Однако первая строка таблицы и последняя строка таблицы я не хочу сортировать. Поэтому я подумал о том, чтобы просто отменить событие, если это был первый или последний ряд. Однако, когда я предупреждаю event.target, он говорит мне, что это элемент, который установлен в сортируемый контейнер. Как я могу на самом деле получить элемент, который был отправлен на событие. Также кто-нибудь знает, как отменить мероприятие? это просто вернуть false или event.preventDefault ()?

Ответы [ 3 ]

1 голос
/ 14 января 2010

Вы можете получить доступ к элементам виджетов со вторым аргументом обратного вызова.

start: function (event, ui){
  var helper=$(ui.helper);
}

http://jqueryui.com/demos/sortable/#overview

В ответ на ваш комментарий:

Вы говоритеВы хотите, чтобы некоторые элементы в списке не были перетаскиваемыми?

Вы должны использовать это предпочтение в опциях

$('someElement').sortable({
  items: '.test',
  //other sortable options
});
0 голосов
/ 14 января 2010

Было бы проще использовать опцию для выбора сортируемых предметов.

$('.testing').sortable({
    items: 'tr:not(:last, :first)'
});

Выше сказано: "сортировать все tr, кроме первого и последнего"

В jQuery вы можете отменить обработчик событий, вернув false.

$(".testing").sortable({
    helper: fixHelper,
    containment:$("testing").parent(),
    start:function(){

        if($(event.target).hasClass("test") || $(this).hasClass('test')){
            alert("hello");
            return false;
        }
    }

});

0 голосов
/ 14 января 2010

Сделай свою жизнь проще.Используйте элементы верхнего и нижнего колонтитула:

<table>
<thead>
  <tr>...</tr>
</thead>
<tfoot>
  <tr>...</tr>
</tfoot>
<tbody>
  <tr>...</tr>
  <tr>...</tr>
  <tr>...</tr>
  ...
</tbody>
</table>

Да, они должны отображаться в таком порядке (нижний колонтитул перед телом).И тогда вы можете просто отсортировать текст, оставив верхний и нижний колонтитулы на месте.Этого, вероятно, будет достаточно:

$(".testing > tbody").sortable({...});
...