在动态创建的元素上运行jQuery.each()

时间:2012-09-07 17:24:58

标签: javascript jquery

我有以下代码;

$('#btnSave').click(function (e) {
    $("input:text").each(function (index, value) {
        var el = $(this);
        if (el.val().length == 0) { el.css('border', '1px solid red') }
        return false;
    });
});

这里,所有输入文本元素都是动态创建的,因此我永远无法验证它们是否为空。

如何使用.on().each()一起使用?我用Google搜索没有运气..提前致谢..

2 个答案:

答案 0 :(得分:4)

你的代码非常好,但摆脱了return false;。在第一次输入命中后,它会停止.each()循环。

<强> jsFiddle example

答案 1 :(得分:1)

除非您点击页面上的元素不在页面上,否则它应该不是问题。 也因为你的回归是假的;当该字段为空时,只有第一个文本框将被赋予边框。其他的将被省略,即使是空的..

试试这个

​$(function() {
    $('#btn1').on('click' , function() {
        var inp = '';
        for(var i=1;i< 6;i++){
           inp += '<input type="text" id="txt' + i + '"/>'
        }   
        $('.textboxes').append(inp);

       var isError = false;
       $("input:text").each(function (index, value) {
            var el = $(this);
            if (el.val() == '') { 
               el.addClass('error');
               isError = true;
            }
        });

            if(isError){return false;}    
    });    

});​

另请查看此工作示例... FIDDLE