0

選択メニューが複製されて追加されるフォームを作成しています。各クローンには jQuery ドロップダウン セレクターがあり、JavaScript コードの最後にあるunitCloneという関数を作成しました。

unitClone = function(input) {
    var id = $('#' + input + ' .unit_select').attr('id');
    var id = ('#' + id);
    //alert(id);
    dd = new Select($(id));
    var selected = $(id).closest('td').find('.ingredient_unit').val();
    if (selected != null) {
        var selected = $(id).find(".dropdown li a[data-id=" + selected + "]").html();
        $(id).find('span').text(selected);
    }
}

何らかの理由でコードが正しく機能していません。最初の項目をクリックして選択することはできず、3 番目の項目では選択できますが、すべてのドロップダウンに同じ値が使用されます。

どんな助けでも大歓迎です。

これが私のコードです:

http://jsfiddle.net/tlaverdure/nKrvh/

4

2 に答える 2

2

js コードのonメソッドをliveに変更すると、すべて正常に動作します

Select.prototype = {
    initEvents: function() {
        var obj = this;
        obj.dd.live('click', function(event) {
            $(this).toggleClass('active');
            return false;
        });
        obj.opts.live('click', function() {
            var opt = $(this);
            obj.val = opt.text();
            obj.index = opt.index();
            var num = $(this).closest('td').find('.num');
            var numVal = $(this).closest('td').find('.num').val();
            if (numVal > 1) {
                obj.val = obj.val + 's'
            }
            obj.placeholder.text(obj.val);
            obj.opt_id = opt.find('a').data('id');
            $('.recipe_difficulty').val(obj.opt_id);
        });
    },
    getValue: function() {
        return this.val;
    },
    getIndex: function() {
        return this.index;
    }
}

これが編集されたコードです。

幸運を

于 2012-12-24T08:31:11.367 に答える
0

修正が見つかりました。.liveうまくいきませんでした。

obj.dd.toggle(function() {
        selectArea = $(this).attr('id');
        $('#'+ selectArea).addClass('active');
        return false;
        },
        function(){
            selectArea = $(this).attr('id');
                $('#'+ selectArea).removeClass('active');
             return true;
    });

http://jsfiddle.net/tlaverdure/nKrvh/3/

于 2012-12-26T15:11:23.423 に答える