jQuery,后加元素问题,动作都不管用,怎么搞?
$(function () {

$("#newpren, #oldpren").click(function () {        //用这个创建的input元素,在minput函数里不管用怎么?其它的原始input元素都可以驱动那个minput函数。
        if ($(this).attr("id") === "newpren") {
            $("#newinput").empty();
            $("#newinput").append("<input id=\"newclass\" name=\"newclass\" style=\"margin-top:10px;\" mtype=\"str:4:30\" class=\"form-control\" placeholder=\"新父类名称\" min=\"5\" max=\"30\" type=\"text\"/><span></span>");
        } else if ($(this).attr("id") === "oldpren") {
            $("#newinput").empty();
            $("#newinput").append("<input id=\"oldclass\" name=\"oldclass\" style=\"margin-top:10px;\" mtype=\"str:4:30\" placeholder=\"旧子类列表\" class=\"form-control\" min=\"5\" max=\"30\" type=\"text\"/><span></span>");
        }
    });


         $('form :input').keyup(function () {
        MINPUT($(this));                
    });

        function MINPUT(typeS) {
        alert("生效!");
        }
  });                   
                    <div>
                    <button type="button" id="newpren">使用新父类</button>
                    <button type="button" id="oldpren">使用已有子类</button>
                </div>


4个回答

因为执行 $('form :input').keyup(function () {这个绑定的时候只绑定dom中已经存在的,你事件添加生成的再这个代码执行之后,没在dom树种所以没有绑定事件,重新绑定过就行了,如果你用的1.7+的jquery可以改为这样,用代理对动态生成的内容也有效

         $('form').on('keyup',':input',function () {
            MINPUT($(this));
        });

1.6-的找到元素重新绑定一次事件


        $("#newpren, #oldpren").click(function () {        //用这个创建的input元素,在minput函数里不管用怎么?其它的原始input元素都可以驱动那个minput函数。
            if ($(this).attr("id") === "newpren") {
                $("#newinput").empty();
                $("#newinput").append("<input id=\"newclass\" name=\"newclass\" style=\"margin-top:10px;\" mtype=\"str:4:30\" class=\"form-control\" placeholder=\"新父类名称\" min=\"5\" max=\"30\" type=\"text\" /><span></span>")
                 .find('input').keyup(function () { MINPUT($(this)); });
            } else if ($(this).attr("id") === "oldpren") {
                $("#newinput").empty();
                $("#newinput").append("<input id=\"oldclass\" name=\"oldclass\" style=\"margin-top:10px;\" mtype=\"str:4:30\" placeholder=\"旧子类列表\" class=\"form-control\" min=\"5\" max=\"30\" type=\"text\" /><span></span>")
                .find('input').keyup(function () { MINPUT($(this)); });
            }
        });

 $(function () {
    $("button").click(function () {
        if ($(this).attr("id") === "newpren") {
            $(this).html('<input id="newclass"/><span></span>');
        } else if ($(this).attr("id") === "oldpren") {
            $(this).html('<input id="oldclass"/><span></span>');
        }
    });
    $('input').keyup(function () {
        MINPUT($(this));                
    });
    function MINPUT(typeS) {
        alert("生效!");
    }
  });                   
                <div>
                    <button type="button" id="newpren">使用新父类</button>
                    <button type="button" id="oldpren">使用已有子类</button>
                </div>
m0_38082783
Rattenking 还有字符串外边用单引号,里边用双引号,就能避免用很多反斜杠!
3 年多之前 回复
m0_38082783
Rattenking 注意在你点击的时候,input的keyup事件是不会生效的,只有你在点击完成,input输入的时候才会alert(“生效!”);
3 年多之前 回复

append新元素后,需要将其在提取出来再附上动作的js(也就是append之后需要重新加载 动作元素,范围可以缩小至新append的元素)

u014353911
wuruize888 可以在详细点么,怎么重新加载
3 年多之前 回复

$('form :input').keyup(function () {
MINPUT($(this));

});
这里的选择器错了,我猜你是要form里面的input,动态生成的html一般这样获取
$(document).on('keyup','form input',function () {
minput($(this));

});

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐