1

jQuery UI でネストされた要素をソート可能にすることができません。ボタンのクリック機能で要素を作成して追加しています。追加された要素では、ネストされた並べ替えを行うことができません。ボタンをクリックすると動的に作成されるネストされた要素をソート可能にするのを手伝ってください。

コードは以下の通りです。

<!DOCTYPE html>
<html>
<head>
<link href="jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="jquery-latest.pack.js"></script>
<script src="jquery-ui.min.js"></script>
<div class="container" style="width:960px; margin:auto;">
  <div style="width:200px; float: left;">
    <input type="button" id="singleText" value="Add Single Text Question" style= " " />
    <input type="button" id="optionsQuestions" value="Add Option Question " style= " " />
  </div>
  <div class="test"> </div>
  <div class="outer" style="width: 750px; float: left;">
    <div class="sortable-outer">
      <div class="inner"> </div>
    </div>
  </div>
</div>
<script type="text/javascript">
    $(function () {
        $('.inner').sortable({
            items: ".sortable-inner"
        });
        $('.outer').sortable({
            items: ".sortable-outer"
        });
    });

    (function () {
        var i = 0;
        $("#singleText").live('click', function () {

            var $ctrl = $('<div class="sortable-outer"><input type="text" name="question' + i + '" placeholder="Enter Your Questions Here..."> <br /> <input type="text" name="question' + i + 'Notes" placeholder="Enter Notes Here..."> <br /> <input type="text" name="question' + i + 'SortTitle" placeholder="Enter Short Title Here..."> <br /><label>Required.? </label> <input type="checkbox" value="question' + i + 'Required"> <br /><label>Is Mandatory? </label> <input type="checkbox" value="question' + i + 'Mandatory"> <br /><span class="removeQuestion" id="' + i + '"> remove </span></div>');
            $(".outer").append($ctrl).addClass("questionInContailer");

        });

        $("#optionsQuestions").live('click', function () {

            var $ctrl = $('<div class="outer"><div class="sortable-outer"><p>Outer Item 1</p><div class="inner"><div class="sortable-inner">Inner Item 1</div><div class="sortable-inner">Inner Item 2</div><div class="sortable-inner">Inner Item 3</div></div></div><div class="sortable-outer"><p>Outer Item 2</p><div class="inner"><div class="sortable-inner">Inner Item 1</div><div class="sortable-inner">Inner Item 2</div><div class="sortable-inner">Inner Item 3</div></div></div></div>');
            $(".outer").append($ctrl).addClass("questionInContailer");


        });

    })();
</script>
</body>
4

1 に答える 1

3
    <script type="text/javascript">
function sorting(){
 $('.inner').sortable({
                items: ".sortable-inner"
            });
            $('.outer').sortable({
                items: ".sortable-outer"
            });
}
        $(document).ready(function(){
           sorting();
        });

      $(document).ready(function(){
            var i = 0;
            $("body").delegate('#singleText','click', function () {

                var $ctrl = $('<div class="sortable-outer"><input type="text" name="question' + i + '" placeholder="Enter Your Questions Here..."> <br /> <input type="text" name="question' + i + 'Notes" placeholder="Enter Notes Here..."> <br /> <input type="text" name="question' + i + 'SortTitle" placeholder="Enter Short Title Here..."> <br /><label>Required.? </label> <input type="checkbox" value="question' + i + 'Required"> <br /><label>Is Mandatory? </label> <input type="checkbox" value="question' + i + 'Mandatory"> <br /><span class="removeQuestion" id="' + i + '"> remove </span></div>');
                $(".outer").append($ctrl).addClass("questionInContailer");
                   sorting(); //calling sorting again
            });

            $("body").delegate('#optionsQuestions','click', function () {

                var $ctrl = $('<div class="outer"><div class="sortable-outer"><p>Outer Item 1</p><div class="inner"><div class="sortable-inner">Inner Item 1</div><div class="sortable-inner">Inner Item 2</div><div class="sortable-inner">Inner Item 3</div></div></div><div class="sortable-outer"><p>Outer Item 2</p><div class="inner"><div class="sortable-inner">Inner Item 1</div><div class="sortable-inner">Inner Item 2</div><div class="sortable-inner">Inner Item 3</div></div></div></div>');
                $(".outer").append($ctrl).addClass("questionInContailer");    
                sorting(); //calling sorting again
            });

        })
    </script>
于 2012-06-15T07:33:50.677 に答える