4

当我从选择框中选择某些内容时,它会向

以这种方式选择选项:

$(
    'div#tabs input[type="text"],
    select option:selected,
    input:checked,
    textarea'
).addClass('takethis');

但是当我选择一个不同的选项时,它不会 takethis从我首先选择的选项中删除该类。我怎么能强迫这个?

4

3 回答 3

12

从所有未选择的选项中删除类:

$("select option:not(:selected)").removeClass("takethis");

然后添加到选定的一个:

$("select option:selected").addClass("takethis");
于 2009-03-19T14:35:54.287 回答
3

您可以像这样使用removeClass

$('#tabs').find('option').removeClass('takethis');

不过,我不确定您要做什么。这段代码:

$('div#tabs input[type="text"],
            select option:selected,
            input:checked,
            textarea').addClass('takethis');

正在抓取所有文本字段、所有选择的选定选项所有选中的字段和所有文本区域并将类添加takethis到其中。那是你想做的吗?

编辑我明白你想要做什么。如果是这样,为什么不这样做呢?

var table = $('<table>');
$('div#tabs :input').each(function() {
    var val = $.trim($(this).val());
    var name = $(this).attr('name');
    if(val) {
        var td1 = $('<td>').html(name);
        var td2 = $('<td>').html(val);
        $('<input>').attr({
            type: 'hidden',
            name: name
        }).appendTo(td2);
        $('<tr>').append(td1).append(td2).appendTo(table);
    }
});
$('#4tab').append(table);

这不是更简单还是我在这里错过了一个要求?

于 2009-03-19T14:16:37.547 回答
2

您需要调用removeClass先前选择的项目。

于 2009-03-19T14:16:05.117 回答