【问题标题】:jQuery get list of checked checkboxes with specific class to arrayjQuery获取具有特定类的选中复选框列表到数组
【发布时间】:2012-05-25 13:37:03
【问题描述】:

我正在尝试获取具有特定类属性的选中复选框列表,并将它们的值放入数组中。我想用它来启用/禁用选择菜单。到目前为止,我有以下内容,这似乎对我不起作用:

<select name="inboxSelect" id="inboxSelect" class="selectDisabledSwitch" data-trigger="selectTrigger" disabled="disabled">
    <option value="">With selected</option>
    <option value="1">Archive</option>
    <option value="2">Mark as completed</option>
</select>


<input type="checkbox" name="inbox-1" id="inbox-1" value="1" class="selectTrigger" />
<input type="checkbox" name="inbox-2" id="inbox-2" value="2" class="selectTrigger" />
<input type="checkbox" name="inbox-3" id="inbox-3" value="3" class="selectTrigger" />

和javascript / jquery:

var frontObject = {
    getCheckboxCheckedArray : function(objClass) {
        var thisArray = $('input:checkbox:checked.' + objClass).map(function () {
            return this.value;
        }).get();
        return thisArray;
    },
    selectDisabledSwitch : function(obj) {
        if (obj.length > 0) {
            var thisObj = $(this);
            var thisTrigger = thisObj.attr('data-trigger'); 
            var thisValues = frontObject.getCheckboxCheckedArray(thisTrigger);
            frontObject.disableMenu(thisObj, thisValues);
            $('.' + thisTrigger).live('change', function() {
                var thisValues = frontObject.getCheckboxCheckedArray(thisTrigger);
                frontObject.disableMenu(thisObj, thisValues);
            });
        }
    },
    disableMenu : function(thisObj, thisValues) {
        if (thisValues.length > 0) {
            thisObj.attr('disabled', false);
        } else {
            thisObj.attr('disabled', 'disabled');
        }
    }
};
$(function() {
    frontObject.selectDisabledSwitch($('.selectDisabledSwitch'));
});

抱歉 - 只是澄清一下 - 如果没有选中具有特定类的复选框,我希望禁用选择,并在至少选中一个时删除禁用属性。

【问题讨论】:

  • 解决问题的方法,总是有帮助! jsfiddle.net/2Wnv4 并且我不清楚这个问题:您想在选中特定复选框时禁用选择?就像选中复选框 1 时它被禁用一样?
  • 嗨,汉斯 - 我已在主帖下添加了说明 - 抱歉,不清楚。

标签: jquery arrays checkbox


【解决方案1】:

尝试改变

var thisObj = $(this);

var thisObj = $(obj);

小提琴示例:http://jsfiddle.net/eR7Vs/

【讨论】:

  • 感谢 F. Calderan - 我完全错过了那个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
相关资源
最近更新 更多