0

我正在构建一个表单,其中克隆并附加了一个选择菜单。在每个克隆中都有一个 jQuery 下拉选择器,我创建了一个名为unitClone的函数,您可以在 JavaScript 代码的末尾看到它。

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);
    }
}

由于某种原因,代码无法正常工作,第一项不允许我单击并选择,第三项允许我选择,但所有下拉菜单都使用相同的值。

任何帮助将不胜感激。

这是我的代码:

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 回答