Javascript 使用jquery更改DOM中的锚点类
我想改变锚定标签的行为。但它不起作用。我每次都有“行为1”。它不会变为“behavour2” 如何让它工作?交换类Javascript 使用jquery更改DOM中的锚点类,javascript,jquery,dom,Javascript,Jquery,Dom,我想改变锚定标签的行为。但它不起作用。我每次都有“行为1”。它不会变为“behavour2” 如何让它工作?交换类 $('.behaviour1').click(function() { alert('behaviour - 1'); $(this).prop('class', 'behaviour2'); }); $('.behaviour2').click(function() { alert('behaviour - 2'); $(this).prop('
$('.behaviour1').click(function() {
alert('behaviour - 1');
$(this).prop('class', 'behaviour2');
});
$('.behaviour2').click(function() {
alert('behaviour - 2');
$(this).prop('class', 'behaviour1');
});
事件处理程序是在页面加载时附加的,以后更改类不会更改事件处理程序,它们仍然附加到相同的元素,而不管以后添加什么类 您必须完全授权或更改其工作方式,第一个选项是最简单的:
$(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');
});
用锚点的父元素替换文档
或一个简单的切换开关:
$(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');
});
... 或者只需在附加到具有特定锚定属性-data-*和name的元素的处理程序中进行检查即可。感谢您的解释。我同意你的解决方案。既然他想改变他的行为,那会是错误的吗?我想您需要删除行为1:$this.addClass'behavious2'。删除类'behavious1';-好的,您现在编辑了答案。@Praveen欢迎您乐于帮助:
$(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');
});
$('.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');
}
});