2012-01-23 3 views
0

내 상황은 다음과 같습니다. 페이지에 포함 된 스크립트 파일 (somescript.js)과 같은 페이지에 다른 코드 스 니펫이 있습니다. 페이지에는 두 개의 버튼이 있는데 첫 번째 코드는 코드 스 니펫을 호출하고 remove()으로 요소를 제거하고 다른 하나는 제거 된 각 요소가 여전히 존재하는지 확인하는 스크립트 파일에서 함수를 호출합니다. 문제는 여전히 그 요소를 찾습니다. 이 문제를 어떻게 해결할 수 있습니까?AJAX로 제거 된 요소가 여전히 존재하는지 확인하십시오.

코드의 잘린은 다음과 같습니다 somescript.js 파일에서 함수가

<script language="javascript" type="text/javascript" src="jquery.js"></script> 
<script language="javascript" type="text/javascript" src="somescript.js"></script> 
<script language="javascript" type="text/javascript"> 

$(document).ready(function() { 
    /* used by the second button to call the checking function */ 
    $("#button2").live("click", function(e){ someFunction(); }); 

    /* if the control is here, it works, but if it's called from the inserted file (somescript.js), it doesn't */ 
    $("#button2").live("click", function(){ 
     if ($("#somediv").length == 0) { 
      alert("Element missing"); 
     } 
}); 

    /* used by the first button to remove the element */ 
    $("#button1").live("click",function() { 
     $("#somediv").remove(); 
    }); 
}); 

</script> 

동안 :

function someFunction() { 
    if ($("#somediv").length > 0) { 
     alert("Alert message"); 
    } 
} 

내가 경고 메시지를 받고 있어요. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

업데이트 : 페이지 내부 코드의 코드에서 동일한 코드를 추가 한

하고 작동이 방법 (위의 코드 참조). 그러나 포함 된 파일 (somescript.js)에있을 때는 여전히 작동하지 않습니다. 나는 무엇을 놓치고있다 ???? ?????

답변

1

다음은 원하는 작업입니다. 어떤 경우에는 요소가 .length이 존재하는 방법이 존재하지 않는 경우 때문에 대신 길이의 정의를 확인해야

if ($('#someDiv') === undefined || $('#someDiv').length == 0) { 
    alert('element does not exists'); 
} 

이유는? '길이'가 정의되지 않은 잘못된 함수라는 오류가 발생합니다.

편집 : 또한 스크립트 태그에서 language=javascript을 제거하십시오. 그래야합니다. <script type="text/javascript" src="somefile.js"></script>

메시지가 계속 표시되는 경우 console.log($('#someDiv'));에 무슨 일이 일어나는지 볼 수 있습니다. 동일한 ID를 가진 요소가 2 개있을 수 있으며 스크립트가 제거되면 해당 ID가있는 마지막 남은 요소가 표시됩니다. ID가 .remove()를 수행 할 때 ID가 고유해야하기 때문에 주어진 ID를 가진 첫 번째 요소 만 제거됩니다.

0

더 새로운 버전의 jQuery에서는 live 기능이 deprecated입니다. on으로 변경하고 도움이되는지 확인해보십시오.

편집 : 봐요! 그럼.

jsfiddle은 코드 자체가 잘못되지 않았 음을 "증명"합니다. HTML 마크 업과 관련이 있습니다. 그것을 공유하고 우리가 도울 수 있어야합니다.

+0

최신 버전이 없습니다. 나는 v1.6.1을 가지고있다. – Alex

+0

나는이 질문에서 코드를 업데이트했다. 지금은 페이지에있는 그대로입니다. – Alex

0

선택기가 올바른지 확인하십시오. 귀하의 코드 샘플을 보면 나는 그것들이 맞는지 보지 못합니다. 일부 요소를 제거하고 어떤 일이 발생할 수 있는지 확인하십시오.

이 콘솔 메시지가 기록되었는지 확인할 수 있습니까?

$("#button1").live("click",function() { 
    $("#somediv").remove(); 
    console.log('somediv removed'); 
}); 
+0

#somediv에 # upfile_0이 없으면 동의합니다. –

+0

나는 그 질문에서 그것을 바로 잡았다. – Alex

+0

@Alex - 편집 된 답변을 확인하고 콘솔 메시지가 기록되는지 확인할 수 있습니까? – ShankarSangoli

관련 문제