使用 jquery 在 DOM 中更改锚点类
Change anchor class in DOM using jquery
<a class="behaviour1" href="link1">Test</a>
我有两个针对"行为 1"和"行为 2"类的点击事件。
$('.behaviour1').click(function() {
alert('behaviour - 1');
$(this).prop('class', 'behaviour2');
});
$('.behaviour2').click(function() {
alert('behaviour - 2');
$(this).prop('class', 'behaviour1');
});
我想更改锚标签的行为。但它不起作用。我每次都会得到"行为1"。它不会更改为"行为2"。
我如何让它工作?
事件处理程序在页面加载时附加,稍后更改类不会更改事件处理程序,无论您以后添加什么类,它们仍附加到相同的元素。
您必须完全委派或更改其工作方式,第一个选项是最简单的:
$(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
替换为锚点的父元素
或简单的拨动开关:
$('.behaviour').on('click', function() {
if ( $(this).data('flag') ) {
// do behaviour 1
}else{
// do behaviour 2
}
$(this).data('flag', !$(this).data('flag'));
});
演示
$(document).on('click','.behaviour1, .behaviour2', function() {
$(this).toggleClass('behaviour1 behaviour2');
if($(this).hasClass('behaviour1')) {
alert('behaviour - 1');
} else {
alert('behaviour - 2');
}
});
交换类
$(document).on('click','.behaviour1', function() {
alert('behaviour - 1');
$(this).removeClass('behaviour1').addClass('behaviour2');
});
$(document).on('click','.behaviour2', function() {
alert('behaviour - 2');
$(this).removeClass('behaviour2').addClass('behaviour1');
});
小提琴演示
相关文章:
- php:打印javascript/jquery dom就绪
- 表单中的 jQuery DOM 不会在 for 循环中更新
- 迭代 coffeescript 中的 jQuery DOM 元素: $(@).捷径
- 向一个jQuery/DOM元素添加一个函数
- jQuery DOM就绪,JavaScript执行
- 即使使用jQuery DOM就绪事件,也无法调用null的方法addEventListener()
- jQuery DOM遍历子菜单子菜单
- Javascript 和 JQuery dom 全局变量范围
- Jquery DOM Manipulation Somenthing比这更好
- 尝试在不使用 jQuery dom ready 函数的情况下传入变量
- jQuery DOM 遍历而不重新加载页面
- 简化 jQuery DOM 请求
- jQuery DOM Insertion with variable insert-method
- 如何对jQuery“DOM”类进行原型设计
- jquery dom insert and selector
- Google Maps API v3 选择信息窗口作为 jquery DOM 对象
- AngularJS 指令和 jQuery DOM 事件绑定
- 选中复选框的 Jquery DOM 设置适用于真而不是假
- HTML DOM和jQuery DOM放在一行中
- 如何处理失败的JQuery DOM转换