jquery
2009-02-26 6 views 3 likes 
3

私はjQueryセレクタを操作するだけで、自分自身でテキスト編集を作成しようとしています。しかし、最初のAJAXコールバックした後、他の人がjQuery ajaxコールバック後にこのイベントを再バインドするにはどうすればよいですか?

function editaVal(celDiv, id) 
    { 
     var novoConteudo = $("<input type='text' id='novoCont" + id + "' value='" + $(celDiv).html() + "' />"); 
     $(celDiv).dblclick(function() 
     { 
      $(this).html(novoConteudo); 
     }); 

     $(novoConteudo).blur(function() 
     { 
      $(novoConteudo).parents("tr").removeClass('trSelected'); 
      $.ajax({ 
       type: 'POST', 
       url: '/SuperAdmin/SalvaValor/?busca=' + $(novoConteudo).val() + '&codValor=' + id, 
       beforeSend: function() 
       { 
        $(celDiv).html($("#loading").show()); 
       }, 
       success: function() 
       { 
        $(celDiv).html($("#loading").hide()); 
        $(celDiv).html(novoConteudo.val()); 
       } 
      }); 
     }); 
    } 

私の質問は...もう動作しません同じ入力テキストのコールバック:私はこれを再バインドすることができますか?ぼかしイベントを再バインドする...入力テキストをぼかすと、2番目のajaxコールバックで何も起こりません。

ありがとうございます!

答えて

5

EDIT
が...これ試してみます。あなたが保持するためのイベントをしたい場合は、単に結合し、それあなたがそれを作成するときにdblclickにIE):

function editaVal(celDiv, id) 
{ 
    $(celDiv).dblclick(function() 
    { 
     var text = $(this).html(); 
     var novoConteudo = $('<input type="text" />') 
      .appendTo($(this).empty()) 
      .attr('id', 'novoCont' + id) 
      .val(text) 
      .blur(function() 
      { 
       $(this).parents("tr").removeClass('trSelected'); 
       $.ajax({ 
        type: 'POST', 
        url: '/SuperAdmin/SalvaValor/?busca=' + $(this).val() + '&codValor=' + id, 
        beforeSend: function() 
        { 
         $(celDiv).html($("#loading").show()); 
        }, 
        success: function() 
        { 
         $(celDiv).html($("#loading").hide()); 
         $(celDiv).html(novoConteudo.val()); 
        } 
       }); 
      }); 
    }); 
} 
+0

ああ! Thanksssssssss !!とてもシンプルでしたが、私はそれを見ることができませんでした! :-) – AndreMiranda

9

jQuery.live(jQuery 1.3+)を使用できます。現在のすべてのおよび今後の要素が一致すると、ハンドラをイベントにバインドします。

+0

私はプラグインをlivequery使用することを試みたが、何も起こりませんでした。私はjQuery 1.2.6を使用しています。残念ながら今はアップグレードできません。 – AndreMiranda

3

ページを設定する、またはコントロールを再バインドして、Ajax呼び出し成功時にその関数を呼び出す関数を1つ作成すると、正常に動作する可能性があります。あなたはAjaxの更新後に全滅ます要素に"onblur"ハンドラを添付している

success: function()     
{      
    $(celDiv).html($("#loading").hide());      
    $(celDiv).html(novoConteudo.val());  
    ConfigMyInputs();   
} 

function ConfigMyInputs() 
{ 
    //foreach item 
    //configure double click 
    //configure blur 
} 

function MakeMyAjaxCall() { 
    //AJAX CODE HERE 
} 
+0

私は私の例でそれをしようとしましたが、成功しませんでした...私はそれを正しくしたか分からない!! – AndreMiranda

関連する問題