jquery
2009-02-26 3 views 3 likes 
3

jQuery 선택기를 조작하여 텍스트 편집을 직접 만들고자합니다. 그러나, 첫 번째 아약스 콜백 후, 나머지는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()); 
       } 
      }); 
     }); 
    } 

내 질문은 ... 더 이상 작동하지 않습니다 동일한 입력 텍스트에 대한 콜백 :이 바인딩 할 수있는 방법 ??? Rebind the blur event ... 입력 텍스트를 흐리게 처리하면 두 번째 아약스 콜백에서 아무 일도 일어나지 않습니다.

감사합니다.

답변

5

편집
는 ...이 시도주십시오. 당신이 지속하는 이벤트를 원하는 경우에, 다만 결합이 당신이 그것을 만들 때합니다 (dblclick에 예) :

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 호출 성공시 해당 함수를 호출하는 단일 함수를 만드는 경우 제대로 작동 할 수 있습니다. 당신은 아약스 업데이트 후 전멸됩니다 요소에 "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

관련 문제