javascript - 使用 jquery 更改 DOM 中的 anchor 类

标签 javascript jquery dom

<a class="behaviour1" href="link1">Test</a>

我有两个“behaviour1”和“behaviour2”类的点击事件。

$('.behaviour1').click(function() {
    alert('behaviour - 1');
    $(this).prop('class', 'behaviour2');
});

$('.behaviour2').click(function() {
    alert('behaviour - 2');
    $(this).prop('class', 'behaviour1');
});

我想更改 anchor 标记的行为。但这不起作用。我每次都会收到“behaviour1”。它不会改变为“behavour2”。

如何让它工作?

最佳答案

事件处理程序附加在页面加载时,稍后更改类不会更改事件处理程序,无论您稍后添加什么类,它们仍然附加到相同的元素。

您必须完全委托(delegate)或更改其工作方式,第一个选项是最简单的:

$(document).on('click', '.behaviour1', function() {
    alert('behaviour - 1');
    $(this).prop('className', 'behaviour2');
});

$(document).on('click', '.behaviour2', function() {
    alert('behaviour - 2');
    changeBehaviour();
    $(this).prop('className', 'behaviour1');
});

document 替换为 anchor 的父元素

或者一个简单的切换开关:

$('.behaviour').on('click', function() {
     if ( $(this).data('flag') ) {
         // do behaviour 1
     }else{
         // do behaviour 2
     }

     $(this).data('flag', !$(this).data('flag'));
});

关于javascript - 使用 jquery 更改 DOM 中的 anchor 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20097339/

相关文章:

javascript - Firebase SDK 删除整个集合而不是仅删除一个文档

javascript - @cc_on 在 JavaScript 中是什么意思?

jQuery 计算 UL 内的 LI 元素并获取当前悬停的数量

javascript - 为什么我的 JavaScript DOM 遍历不起作用?

javascript - 如何使用 Javascript 创建引导元素

javascript - 我不明白为什么我在这里收到 "Cannot read property ' length' of undefined"错误

javascript - 从以 _ 开头的 JavaScript 变量可以推断出什么?

javascript - 检查 div 内容是否包含数组中的单词并替换它

javascript - 如何使用 jquery 将字符串转换为 HTMLElement?

java xsl模板匹配