2016-01-24 5 views
0

Я включил функцию сортировки jquery на свой сайт и прекрасно работает с одним незначительным исключением. Он работает только после того, как я нажимаю один раз на странице. Раздел страницы, в которой находятся отсортированные элементы, загружается после запроса ajax, поэтому я использую функцию «on». Мне бы хотелось разобраться, как заставить это работать, не нажимая сначала.Jquery Сортировка только пожаров после второго щелчка

$(document).on("mousedown.sortable", "#container", function() { 
 
    $("#container").sortable({ 
 
    update: function(event, ui) { 
 
     var data = $(this).sortable("serialize"); 
 
     $.ajax({ 
 
     data: data, 
 
     type: 'POST', 
 
     url: 'myurl' 
 
     }); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"> 
 
</script> 
 
<div id="mainContainer"> 
 
    <ul id="container"> 
 
    <li id="item-1">Item 1</li> 
 
    <li id="item-2">Item 2</li> 
 
    </ul> 
 
</div>

Для тех, кто читает это позже, ключ к принятому ответ, чтобы иметь часть JQuery кода загружается каждый раз, когда часть HTML загружается в документ с помощью AJAX, а не в «основном» фрагменте кода, который загружается при первой загрузке самой страницы.

ответ

1

Вам не нужно обработчик MouseDown событий (удален здесь), так как это является причиной сортировкой быть добавлены только после того, как вы делаете свой первоначальный щелчок (как описано сами)

$("#container").sortable({ 
 
    update: function(event, ui) { 
 
    var data = $(this).sortable("serialize"); 
 
    $.ajax({ 
 
     data: data, 
 
     type: 'POST', 
 
     url: 'myurl' 
 
    }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"> 
 
</script> 
 
<div> 
 
    <ul id="container"> 
 
    <li id="item-1">Item 1</li> 
 
    <li id="item-2">Item 2</li> 
 
    </ul> 
 
</div>

+0

Ли, спасибо, но поскольку HTML загружается после начальной загрузки страницы через отдельный вызов AJAX, эти элементы ранее не существуют и этот код не будет работать. – redstang423

+0

Хорошо, это легко. Просто вызовите «sortable» код после добавления новых элементов. –

+0

Я не следую - вы предлагаете мне, чтобы этот код jquery вызывался в php, который был загружен из загрузки AJAX? Содержимое div, содержащего сортируемый список, может быть заменено и перезагружено несколько раз. Будет ли загрузка jquery-скрипта несколько раз создавать конфликт? – redstang423

Смежные вопросы