jQuery在当前页面上的ajax调用后不会触发


jQuery does not trigger after ajax call on current page

我的网站是基于PHP构建的。我有一个"注册"页面,可以验证是否已经使用了用户名。参见以下代码:

$('#signup_form').find('#username').blur(function() {
    $ajax({
           url: '/login/check_username',
      type: "POST",
      data: form_data,
           success: function(result) { 
                if (result) {
                $('#username').after('<div id="bad_username"
                               style="color:red;">' +
                             '<p>username taken</p></div>');
                }
            }
     });

当我加载我的页面网站.com/signup 时,上面的工作原理很好

当然,它之所以有效,是因为jQuery能够找到"username"字段并对blur执行操作(我可以通过查看html源代码来验证这一点(。

现在,如果"username"字段没有在html中呈现呢?当我在ajax页面加载上加载注册页面时,就会发生这种情况,在这种情况下,浏览器根本不知道"用户名"字段,即使它以视觉方式显示它。

总结快乐之路->

我加载->site.com/signup我查看源->id为"username"的字段可见如果用户名已经存在,On blur事件将触发并显示消息。

总结问题->

**1**我转到->site.com/some_page在这个页面中,我点击site.com/signup

**2**现在some_page的内容通过ajax替换,我看到了我的"注册"表单字段。

**3**查看源->我过去在快乐路径场景中看到的"用户名"现在不再出现在html源中;

**4**也许是因为html源中没有"username",现在当我模糊用户名时,什么都不会发生。jQuery不会被调用,也不会检查现有的用户名。

有没有一个特殊的函数告诉jQuery"查找"或"加载"用户名"字段?

请帮忙!谢谢

在您的情况下,您需要更改:

$('#signup_form').find('#username').blur(function() {

至:

$('body').on('blur', '#username', function() {
                      ^^^^^^^^^ the element you want to register the event of
   ^^^^ any containing element that already exists on page load