使用toggleClass将事件处理更新到新类

时间:2012-04-10 21:45:07

标签: javascript jquery

不是全职jQuery也不是Javascript dev如果愚蠢的问题那么抱歉。我认为我需要类似live函数的东西来交换类,我要处理哪个值绑定到选择器。

我基本上有这样的标记:

取消禁用:

<span id="enable-1695" data-id="1695" class="unenable-item">unenable</span>

启用:

<span id="enable-1695" data-id="1695" class="enable-item">enable</span>

我想在点击unnable后使用toggleClass更新为enable-item。此外,我需要选择器将运行时更新为这些新值。我认为这曾经通过live方法发生。我怎么做到这一点。我目前正在手动执行此操作,但Javascript运行时不会正确更新事件处理。

我会使用哪些javascript来确保其正常工作?

感谢任何帮助。

THX

1 个答案:

答案 0 :(得分:0)

首先,或许“禁用”可能是一个更好的词选择,但我们不是在这里挑剔语法...

我假设当您点击“无法启用”链接时,它应该更改为“启用”链接:

$('.unenable-item').live('click', function () {
    $(this)
        .removeClass('unenable-item')
        .addClass('enable-item')
        .text('enable');
    doSomethingWith($(this).data('id'));
});
$('.enable-item').live('click', function () {
    // the inverse of the above
});

在这里,我使用了live函数,有点类似于.on或其弃用的别名.bind,除了它实际上没有将事件处理程序附加到所选对象由选择器。相反,它会将一个处理程序附加到文档中,只要点击任何内容,它就会检查选择器然后查看它是否匹配。您还可以使用.delegate进行更多目标匹配。文档(链接)中存在对这些内容的更好解释。