2016-08-24 2 views
0

내 document.ready에 다음 작업이 있습니다. 내가하려고하는 것은 ID가 '_View_memberDirectory'로 끝나는 div를 선택적으로 제거하는 것입니다. 따라서 아래 함수가 아닌 경우 작동하는 다음 코드를 추가합니다. 그러나, 나는 그것을 내 기능 안에 넣을 때 작동하지 않는다. 현재 부울 값은 항상 true입니다. 어떤 아이디어? document.ready에 DOMNodeInserted로 Bind 이벤트를 등록하는 중

$("[id$='_View_memberDirectory']").bind('DOMNodeInserted', function (event) { 
     $(this).empty(); 
}); 

내 스크립트를

<script type="text/javascript"> 
    $(document).ready(function() { 

     $(function() { 
      var bIsContact; 
      bIsContact = IsContact(); 
      if (bIsContact.responseText === "true") { 
        //does not work here 
       $("[id$='_View_memberDirectory']").bind('DOMNodeInserted', function (event) { 
        $(this).empty(); 
       }); 

      } 
      else { 
       e.preventDefault; 
      } 
     }); 

     //works here <------- 
    }); 

편집 : 추가 IsContact() 함수가

대신 AJAX 호출에서 async: false를 사용하지 않는 것이 좋습니다

function IsContact() { 
     var friendId = <%= Request.QueryString("UserID").ToString()%> + ''; 
     var sf = $.ServicesFramework(<%=ModuleId %>); 
     var serviceUrl = sf.getServiceRoot('OmniBody'); 
     var obj = { "friendId": friendId }; 

     return $.ajax({ 
      type: "POST", 
      cache: false, 
      url: serviceUrl + "/ModuleTask/IsContact", 
      beforeSend: sf.setModuleHeaders, 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify(obj) 
     }).done(function (result) { 

     }).fail(function (xhr, result, status) { 
      alert(result); 
     }); 
    } 
+1

다른 DOM 준비 핸들러에서'$ (function() {'을 (를) 사용하는 이유는 무엇입니까? 그것을 제거하고'IsContact()'의 코드를 보여줄 수 있습니까? – Satpal

+0

@Satpal 삭제했습니다. 여전히 작동하지 않습니다. – alwaysVBNET

+0

'e.preventDefault; –

답변

0

, 당신이 시도 할 수 있습니다 이쪽처럼

$(document).ready(function() { 

    $(function() { 
     var bIsContact; 
     IsContact().done(function(result) { 
      if (result) { // assuming result is boolean value 

       // do your stuff here 
       $("[id$='_View_memberDirectory']").bind('DOMNodeInserted', function(event) { 
        $(this).empty(); 
       }); 

      } else { 
       //something elase 
      } 
     }).fail(function(xhr, result, status) { 
      alert(result); 
     }); 
    }); 

    //works here <------- 
}); 

function IsContact() { 
    var friendId = <%= Request.QueryString("UserID").ToString()%> + ''; 
    var sf = $.ServicesFramework(<%=ModuleId %>); 
    var serviceUrl = sf.getServiceRoot('OmniBody'); 
    var obj = { 
     "friendId": friendId 
    }; 
    return $.ajax({ 
     type: "POST", 
     cache: false, 
     url: serviceUrl + "/ModuleTask/IsContact", 
     beforeSend: sf.setModuleHeaders, 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify(obj) 
    }); 
} 
+0

문자열 부울 즉 "true" – alwaysVBNET

+0

좋아, 그럼'(결과 === "사실") {..' – Jag

+0

그것은 작동하지 않습니다 사용하십시오. 그것은 원래의 문제와 같은 효과를냅니다. – alwaysVBNET

관련 문제