如何更改html按钮类和功能?

时间:2013-02-18 10:55:00

标签: php jquery ajax html5

我想要的是更改按钮类别和值以更改按钮功能

正在发生的事情是价值和类成功更改功能与旧类相同 为什么?!

浏览器是否将jquery代码存储在某处并从中加载?!如何在那种情况下刷新它?

这是我的代码: (我正在使用带有html和php的Jquery Ajax)

    var target_button; // global variable to store the target button

    $(".activateButton").click(function(){

        var serial_number = $(target_button).attr("id");
        var cvc = $("#cvc").val();

        $.ajax({
            type: "GET",
            url: '../ajax/tag.php',
            data:
            {
                s: serial_number,
                c: cvc
            }
        }).done(function(data)
            {
                var result = jQuery.parseJSON(data);
                if (result == "1")
                {
                    $("#message").text('Tag Successfully Activated');
                    $("#overlay_form").fadeOut(500);
                    $(target_button).attr("value", "Disable");
                    $(target_button).removeClass("popActivateButton");    //<---------- REPLACING THE CLASS
                    $(target_button).addClass("enableDisableButton");     //<----------

                }

这是按钮:

    if($tags[$i]['Status'] == 1){
        $button = "<input type=\"button\" class=\"enableDisableButton\" id=\"".$tags[$i]['SerialNumber']."\" value=\"Disable\"/>";
    }
    if($tags[$i]['Status'] == 2){
        $button = "<input type=\"button\" class=\"popActivateButton\" id=\"".$tags[$i]['SerialNumber']."\" value=\"Activate\"/>";
    }

2 个答案:

答案 0 :(得分:0)

使用选择器时,它会选择执行代码时匹配的所有元素。以前称为选择器 - 即使是缓存 - 当匹配它们的新元素添加到页面时,会动态更新。

如果你将事件处理程序绑定到元素上,那么它们将会一直存在,直到你为止。删除事件处理程序,或b。完全删除元素。只是更改类不会神奇地改变绑定的事件处理程序。

我建议改为使用事件委派:

$(document).on('click', '.enableDisableButton', function() {
    //your code for enableDisableButton
}).on('click', '.popActivateButton', function() {
    // your code for popActivateButton
});

使用事件委派时,会在触发事件时检查选择器,而不是在代码执行时检查选择器,因此反映对页面的更改。

请注意,我在上面的代码示例中使用了document。但是,您应该使用一个静态元素的选择器(一个不会被删除的元素),它将包含您想要执行事件处理函数的元素; DOM结构越接近动态元素越好。

答案 1 :(得分:0)

是的,一旦分配了事件,您需要清除之前的事件并将新事件绑定到每个事件。

假设您有button并且您已分配click事件,那么很遗憾您想要清除click event以及其他可以执行此操作的内容,如下所示

$(SOMESELECTOR).unbind('previous_event').bind('new_event');

有关jQuery bind and unBind的更多搜索。