在最近添加的jquery函数中调用jquery函数

时间:2013-05-29 12:16:16

标签: jquery add document-ready

这个标题有点混乱,但这是我的问题:

我在jquery中有这个add函数:

$(document).ready(function(){   

   var i = $('input').size() +1;

   $('#add').click(function(event) {
        event.preventDefault();

    $('.table1').before('<table class="new_table">
       '<tr>' +
         '<td colspan="4" class="subTitle_bar">' +
           '<spring:message code="phoneTable" /> '+ i +' '+ 
         '</td>' +
       '</tr>' +

       '<tr>' +
           '<td class="item">' +
              '<spring:message code="phoneNumber"  />' +
              '<span class="required">*</span>' +
           '</td>' +

           '<td colspan="3">' +
              '<input type="text" id="phone1' + i + '" name="phone1' + i + '" class="requiredField phone" />' +
           '</td>' +
       '</tr>');
     i++;
    });

此类=&#34; requiredField phone&#34;叫这个电话面具:

$(document).ready(function($) {
$.mask.definitions['~']='[+-]';
$('.phone').mask('(99) 9999-9999');

因此,当有人点击添加新字段时,此字段必须有一个掩码,但它没有。

1 个答案:

答案 0 :(得分:0)

您正在尝试将事件处理程序绑定到Document ready事件上的$('。phone')元素,而在您尝试这样做时它不存在于DOM树中。

解决方案很简单,你需要做这样的事情(未经测试的代码):

$(document).ready(function(){   

   var i = $('input').size() +1;

   $('#add').click(function(event) {
        event.preventDefault();

    $('.table1').before('<table class="new_table"><tr>' +
         '<td colspan="4" class="subTitle_bar">' +
           '<spring:message code="phoneTable" /> '+ i +' '+ 
         '</td>' +
       '</tr>' +

       '<tr>' +
           '<td class="item">' +
              '<spring:message code="phoneNumber"  />' +
              '<span class="required">*</span>' +
           '</td>' +

           '<td colspan="3">' +
              '<input type="text" id="phone1' + i + '" name="phone1' + i + '" class="requiredField phone" />' +
           '</td>' +
       '</tr>');
     i++;
     $.mask.definitions['~']='[+-]';
     $('.phone').mask('(99) 9999-9999');
    });
});

由于每次点击都要添加一个元素,因此使用:last filter或last function:

是有意义的
 $('.phone').filter(':last').mask('(99) 9999-9999');

或者

 $('.phone').last().mask('(99) 9999-9999');