3

フィドルを参照してください:http: //jsfiddle.net/hp7Cz/25/

$('.moveDownLink').click(function() {

var $thisQuestion = $(this).parent();
var originalIndex = $thisQuestion.index();    
var $textField = $(this).next();
var fieldVal = parseInt($textField.val());


        var $target = $('.question:eq('+(fieldVal - 1)+')');
        var $newElement = $thisQuestion.clone().insertAfter($target);
        $newElement.prevUntil(".question:nth-child("+ (originalIndex + 1)  +")").each(function() {
            var $tField = $(this).find('input');
            var val = parseInt($tField.val());
            $tField.attr('value',(val - 1));
        });

        $thisQuestion.detach();




});​

サンプルコードは、質問を下に移動する、つまり位置1から4などにのみ処理することです。奇妙なことに、質問1を最初に4番目に移動すると、Chromeで機能します。ただし、.prevUntil()はセレクターで指定された要素で停止せず、n番目の子フィルターで指定されたインデックスに関係なくすべての要素を列挙し続けるため、質問2を3番目に上に移動すると失敗します。

IEとFireFoxでは、すべてが機能し、毎回正しく順序付けられます:1,2,3,4

4

1 に答える 1

1

オブジェクトのクローンを作成すると、イベントリスナーが失われます。そして、それは私にとってFFやIEでは機能しません。

代わりに.on()を使用してみてください。http://jsfiddle.net/hp7Cz/30/

$('#container').on("click", ".moveDownLink", function() {}
于 2012-12-02T19:36:48.633 に答える