我已经搜索了,但是找不到我需要的东西。我对Javascript知之甚少,因此我需要一些帮助。

我有一个数字,例如numValue,我想根据在不同区域中选择的项目来增加或减少。另外,我希望这些项目突出显示并保持突出显示,直到再次单击为止。选中时,我希望numValue减少1;取消选中时,我希望numValue增加1。

例:

50(numValue)

第一组


选项1
选项2
选项3


2组


选项1
选项2
选项3


因此,如果我单击组1 /选项1和选项2加组2 /选项3,我希望numValue减少3(对于3个选定的选项)。我希望每个项目在单击时保持选中状态,而在单击另一个选项时不要取消选择。然后再次单击时取消选择。这样就变成了:

47(numValue)

第一组


选项1
选项2
选项3


2组


选项1
选项2
选项3


谁能指出我正确的方向?

最佳答案

这样的事情应该起作用:http://jsfiddle.net/2NJNT/

基本上,我只是将所有逻辑放在class属性中。

的HTML

<ul class="selector">
    <li>Foo</li>
    <li>Bar</li>
    <li>Baz</li>
    <li>Qux</li>
</ul>


的CSS

.selector .chosen{
    font-weight: bold;
}


的JavaScript

$(function () {
    var selector = $('ul.selector'),
        numValue = 0,
        HIGHLIGHT_CLASS = 'chosen';

    selector.on('click', 'li', function () {
        var src = $(this);

        if (src.hasClass(HIGHLIGHT_CLASS)) {
            src.removeClass(HIGHLIGHT_CLASS);
            numValue--;
        } else {
            src.addClass(HIGHLIGHT_CLASS);
            numValue++;
        }
    });

});


旧版jQuery(
$(function () {
    var numValue = 0,
        HIGHLIGHT_CLASS = 'chosen';

    $('ul.selector').delegate('li', 'click', function () {
        var src = $(this);

        if (src.hasClass(HIGHLIGHT_CLASS)) {
            src.removeClass(HIGHLIGHT_CLASS);
            numValue--;
        } else {
            src.addClass(HIGHLIGHT_CLASS);
            numValue++;
        }
    });

});

09-17 21:40