jQuery切换名称属性并使用ne属性

时间:2013-05-11 14:57:54

标签: jquery

我尝试在按钮上切换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

由于某种原因,第二个函数在新名称属性启动时不会触发,有些指针?

3 个答案:

答案 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");
    }

});

Fiddle here

答案 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)

因为您正在修改元素绑定事件后用作选择器的属性,所以新选择器无效。 简单的方法应该将事件委托给嵌套元素的任何静态容器:

http://jsfiddle.net/DRUQt/6/

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

});