我尝试在按钮上切换name属性,然后使用由新名称调用的函数将其切换回来。我的代码在这里:
HTML
<button name="post">Post</button>
的jQuery
$('button[name=post]').click(function(){
$(this).attr('name','get');
$(this).text('get');
});
$('button[name=get]').click(function(){
$(this).attr('name','post');
$(this).text('post');
});
最后但并非最不重要的是 JS FIDDLE
由于某种原因,第二个函数在新名称属性启动时不会触发,有些指针?
答案 0 :(得分:2)
你也可以尝试这个,这对我来说似乎更简单
HTML
<button id="clickme" name="post">Post</button>
JAVASCRIPT
$('#clickme').click(function(){
if($(this).attr("name") == "post") {
$(this).attr("name", "get");
$(this).text("get");
} else {
$(this).attr("name","post");
$(this).text("post");
}
});
答案 1 :(得分:1)
您必须使用事件委派,因为您更改了按钮的名称(DEMO)。
添加父级或使用现有父级:
<div id="parent">
<button name="post">Post</button>
</div>
以这种方式绑定你的事件:
$('#parent').on('click', 'button[name=post]', function(){
$(this).attr('name','get');
$(this).text('get');
});
$('#parent').on('click', 'button[name=get]', function(){
$(this).attr('name','post');
$(this).text('post');
});
答案 2 :(得分:1)
因为您正在修改元素绑定事件后用作选择器的属性,所以新选择器无效。 简单的方法应该将事件委托给嵌套元素的任何静态容器:
$(document).on('click','button[name=post]',function(){
$(this).attr('name','get');
$(this).text('get');
});
$(document).on('click','button[name=get]',function(){
$(this).attr('name','post');
$(this).text('Post');
});