Javascript 根据其他事件更改事件操作
是否有一种普遍接受的方法来更改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
#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"));
});
});