jQuery点击从未调用过

时间:2016-06-24 16:52:58

标签: javascript jquery

我有一个简单的复选框:

<div class="checkbox_square">
    <input id="check_profile_password_show" type="checkbox" value=""></input>
    <label for="check_profile_password_show"></label>
    <span class="span-small" th:text="#{label.password_show}"></span>
</div>

如果您点击该复选框,我想更改密码输入的输入类型:

/**
 * 
 */
$(document).ready(function() {
    alert("ready");

    /**
     * 
     */
    $("#check_profile_password_show").click(function() {
        alert("click");

        if ($("#profile_password_input").attr("type") == "password") {
            $("#profile_password_input").attr("type", "text");
        } else {
            $("#profile_password_input").attr("type", "password");
        }

        if ($("#profile_password_input_new").attr("type") == "password") {
            $("#profile_password_input_new").attr("type", "text");
        } else {
            $("#profile_password_input_new").attr("type", "password");
        }

        if ($("#profile_password_input_repeat").attr("type") == "password") {
            $("#profile_password_input_repeat").attr("type", "text");
        } else {
            $("#profile_password_input_repeat").attr("type", "password");
        }
    });
});

调用“就绪”警报,但从不调用点击警报,因此我的输入复选框的点击功能不会被覆盖。我包含了正确的javascript文件(准备好的警报工作),我在另一个javascript文件中也有一个类似的机制:

/**
 * 
 */
$(document).ready(function() {
    /**
     * 
     */
    $("#check_login_password_show").click(function() {
        if ($("#login_password_input").attr("type") == "password") {
            $("#login_password_input").attr("type", "text");
        } else {
            $("#login_password_input").attr("type", "password");
        }
    });
});

哪种方法完美无缺。 所以它是相同的代码。一个是工作 - 一个不工作。你能帮我弄清问题是什么吗?

1 个答案:

答案 0 :(得分:1)

如果在创建点击处理程序时目标元素不存在,那么它就不会像那样工作。

让它发挥作用的另一种方法是改为定位文档。

$(document).on("click", "#check_profile_password_show", function(){
    alert("poop");
});