Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 根据其他事件更改事件操作_Javascript_Jquery - Fatal编程技术网

Javascript 根据其他事件更改事件操作

Javascript 根据其他事件更改事件操作,javascript,jquery,Javascript,Jquery,是否有一种普遍接受的方法来更改JavaScript事件的操作 以下内容看起来很干净,但不起作用,因为在呈现页面时,第一个事件绑定到#link,而类更改时,没有任何更改。听起来我对这个理解正确吗 $('#change-to-option-1').click(function(){$('#link').attr('class','option-1');}); $('#change-to-option-2').click(function(){$('#link').attr('class','opti

是否有一种普遍接受的方法来更改JavaScript事件的操作

以下内容看起来很干净,但不起作用,因为在呈现页面时,第一个事件绑定到
#link
,而类更改时,没有任何更改。听起来我对这个理解正确吗

$('#change-to-option-1').click(function(){$('#link').attr('class','option-1');});
$('#change-to-option-2').click(function(){$('#link').attr('class','option-2');});

$('.option-1').click(function(){alert('option 1');});
$('.option-2').click(function(){alert('option 2');});

<a href="#" id="change-to-option-1">Option 1</a>
<a href="#" id="change-to-option-2">Option 2</a>

<a href="#" id="link" class="option-1">Click Me</a>

或者有一种更普遍接受的方法吗?

如果您想在更改元素的类/最初用于绑定事件的任何标识后为其创建事件触发器。那你就得去游泳了


如果您使用
的任何最接近的静态父项而不是
文档
选项1
,则可以期望代码得到优化。我不建议您使用硬编码,也更喜欢硬编码。所以这里有一个解决方案,它会照顾到你正在尝试做什么

$('#change-to-option-1,#change-to-option-2').click(function(){
   $('#link').attr('class',this.id.split('-')[2] + '-' + this.id.split('-')[3]);
});

 $('#link').on('click',$(this).attr("class"), function()
 {
      alert($(this).attr("class"));
 });
工作示例:

如果计划引入更多具有类似id结构的锚定链接:

$('[id^=change-to-option-]').click(function(){
   $('#link').attr('class',this.id.split('-')[2] + '-' + this.id.split('-')[3]);
});

 $('#link').on('click',$(this).attr("class"), function()
 {
      alert($(this).attr("class"));
 });
工作示例:

如果希望将所有内容放在一个事件块中:

$('#change-to-option-1,#change-to-option-2').click(function(){
   $('#link').unbind('click');
   $('#link').attr('class',this.id.split('-')[2] + '-' + this.id.split('-')[3]).on('click',$(this).attr("class"), function()
   { alert($(this).attr("class"));
   });
});

示例:

因为类充当排序标志,所以第二种方法对我来说很好
$('[id^=change-to-option-]').click(function(){
   $('#link').attr('class',this.id.split('-')[2] + '-' + this.id.split('-')[3]);
});

 $('#link').on('click',$(this).attr("class"), function()
 {
      alert($(this).attr("class"));
 });
$('#change-to-option-1,#change-to-option-2').click(function(){
   $('#link').unbind('click');
   $('#link').attr('class',this.id.split('-')[2] + '-' + this.id.split('-')[3]).on('click',$(this).attr("class"), function()
   { alert($(this).attr("class"));
   });
});