2012-03-10 4 views
0

다른 이벤트 (현재 무슨 일이 일어나고 있는지)를 트리거하지 못하도록 .live() 이벤트 핸들러를 첨부해야하지만, 어디에서 추가해야합니까?JQuery - .on() /. live()를 추가 할 위치는 어디입니까?

전체 스크립트 :

$(document).ready(function() { 

$("input#name").select().focus(); 

$('#livelist').load('/scripts/livelist.php', { guestlist:'<?php echo $_GET['guestlist']; ?>'}); 

var refreshId = setInterval(function() { 
    $('#livelist').load('/scripts/livelist.php', { guestlist:'<?php echo $_GET['guestlist']; ?>'}); 
}, 5000); 
$.ajaxSetup({ cache: false }); 

$("input#name").swearFilter({words:'bob, dan', mask:"!", sensor:"normal"}); 

var tagCheckRE = new RegExp("(\\w+)(\\s+)(\\w+)"); 

jQuery.validator.addMethod("tagcheck", function(value, element) { 
    return tagCheckRE.test(value); 
}, ""); 

$("#addname").validate({ 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
     $('#naughty').fadeIn('fast'); 
     $('#naughty').delay('1000').fadeOut('fast'); 
     } else { 
     $('#naughty').hide(); 
     } 
    } 
}); 

$('#showall').live('click', function() { 
    $('#showall').hide(); 
    $('div#shownames').slideDown('fast'); 
}); 

jQuery(document).ajaxStart(function(){ 
    $("input#name").blur(); 
    $('#working').show(); 
    $('#event-box').fadeTo('fast', 0.5); 
}) 

var names = ''; 
var dot = '.'; 

$('#addname').ajaxForm(function() { 

    var options = { 

      success: function(html) { 
        /* $("#showdata").replaceWith($('#showdata', $(html))) */ 
        var value = $("input#name").val().toUpperCase();; 
        $("span.success").text(value); 
        if (names == '') { 
         names = value; 
        } 
        else { 
         names = ' ' + value + ', ' + names; 
         $("span#dot").text(dot); 
        } 
        $("span#name1").text(names); 
        $('#working').fadeOut('fast'); 
        $('#success').fadeIn('fast'); 
        $('#added-names').fadeIn('fast'); 
        $('#success').delay('600').fadeOut('fast'); 
        $("input#name").delay('1200').select().focus(); 
        $('#event-box').delay('600').fadeTo('fast', 1.0); 
        $(':input','#addname') 
         .not(':button, :submit, :reset, :hidden') 
         .val('') 
      }, 
      cache: true, 
      error: function(x, t, m) { 
       if(t==="timeout") { 
        $('#working').fadeOut('fast'); 
        $('#fail').fadeIn('fast'); 
        $('#fail').delay('600').fadeOut('fast'); 
       } else { 
        $('#working').fadeOut('fast'); 
        $('#fail').fadeIn('fast'); 
        $('#fail').delay('600').fadeOut('fast'); 
        alert(t); 
       } 
      } 
    } 

    $(this).ajaxSubmit(options); 
    $('body').select().focus(); 
}); 

    $("input").bind("keydown", function(event) { 
     var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode)); 
     if (keycode == 13) { 
      document.getElementById('#submit').click(); 
      return false; 
     } else { 
     return true; 
     } 
    }); 

}); 

ajaxForm 기능은 내 현재의 구현을 사용하여 트리거되고있다.

+0

문제를 좀 더 정확하게 설명 할 수 있습니까? 다른 이벤트는? 코드에 이벤트 핸들러가 없으므로'.live()'가 어떻게 도움이 될지 명확하지 않습니다. 그러나 당신이보고있는 원하지 않는 행동을 내가 모르는 것처럼, 아마도 당신이 그것을 포함한다면 분명 할 것입니다. –

+1

나는 당신이 뭔가를 오해하고 있을지도 모른다고 생각한다. 어떤 이벤트 핸들러가 방아쇠를 당기는 것을 막고 싶습니까? – Niko

+0

아무 데나 추가하지 마십시오. 더 이상 사용되지 않습니다. '.on()'을 사용하십시오. – mowwwalker

답변

0

고장 : .ajaxStart()으로

jQuery(document).ajaxStart(function(){ 
    $("input#name").blur(); 
    $('#working').show(); 
    $('#event-box').fadeTo('fast', 0.5); 
}) 

이는 .load(), 나는 아무도 그것을 발견하지 놀랐어요 포함, 모든 AJAX를 호출하는 동안 트리거 받고, 글로벌 매개 변수입니다.

관련 문제