0

jQuery sortable を使用して画像の順序を操作し、DB に書き込みます。その機能はうまく機能します。

PHP

 echo "<div class='revisionNum'>";
            echo "<ul id='sortable_" . $count ."'>";

            while($row = mysql_fetch_array($result)) {
                $sortImageName = $row['OrgImageName']; 
                $sortPath = "../data/gallery/" . $galleryID . "/images/album/" . $sortImageName;
                echo "<li class='sortPhotos' id='item_{$row['id']}' >";
                echo '<img class="sortImage" src="'. $sortPath .'"/>';
                echo "<p>" . $sortImageName . "</p>";
                echo "</li>";
            }
            echo "</ul>";
            echo "</div>";

jQuery

//make sortable
    $(".revisionNum").each(
        function(e) {
        num = e + 1;
        $("#sortable_" + num).sortable(
            {stop:function(i) {
                serial = $("#sortable_"  + num).sortable("serialize");
                $.ajax({
                    type: "GET",
                    url: "../albumUploader/queries/sort.php",
                    data: serial
                });
            },
            opacity:1.0,
            //cursor: move
        });    
    });

MYSQL

foreach($_GET['item'] as $key=>$value) {

    mysql_query("   UPDATE galleryimage
                    SET sort = '{$key}'
                    WHERE id = '{$value}'  
                ");

問題は、[.revisionNum] の場合、並べ替えている実際の UL ではなく、最後の UL<div class=''revisionNum>のみを 取得している複数の場合です。serial = $("#sortable_" + num)これについて助けてくれてありがとう。さらに説明が必要な場合はお知らせください。

4

1 に答える 1

2

あなたの質問を完全に理解しているかどうかはわかりませんが、次のことを探していると思います。

変数numは、各ループで作成するすべてのループを変更します。しかし、最後には最後のループの値になります。グローバル変数のように見えるためnum、停止関数で呼び出すことはできません。次に、最後の値を使用します。最後のループの値。(あなたの問題を説明します)

これを解決するには、コードを次のように変更することをお勧めします。

$(".revisionNum").each(
    function(e) {
    $(this).children("ul").sortable(
        {stop:function(i) {
            num = $(this).children("ul").attr("id").replace("sortable_", "");
            serial = $(this).children("ul").sortable("serialize");
            ...

$(this)ループしている を参照し$(".revisionNum")、停止機能でも記憶されます。

于 2012-07-10T22:15:03.970 に答える