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

他のイベント(現在何が起こっているのか)をトリガーしないようにするには、.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); 
}) 

グローバルパラメータであり、それは​​を含め、すべてのAJAX呼び出しの際にトリガされていた、私は誰もがそれを発見していない驚いています。

関連する問題