Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery更改DOM中的锚点类_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 使用jquery更改DOM中的锚点类

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('

我想改变锚定标签的行为。但它不起作用。我每次都有“行为1”。它不会变为“behavour2”

如何让它工作?

交换类

$('.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');
    }
});