2014-03-13 5 views
0

그래서 onblur/onkeyup/onclick 트리거가있는 텍스트 필드가 있습니다. 이것은 잘 작동합니다.Jquery가 요소의 텍스트를 두 번 이상 업데이트하지 않습니다.

값을 취하여 <b id="search_term"></b>에 추가합니다. 이것은 처음에는 시각적으로 만 작동합니다. 그러나 관리자는 매번 업데이트되고 있음을 보여줍니다.

업데이트되는 요소는 고정 된 위치에 있으며 검색 입력이 비어 있지 않으면 컨테이너 요소를 표시하기 위해 JQuery $("#search_results").slideDown("slow", function() {});을 사용합니다.

닫기 버튼을 클릭하여 slideUp() 기능을 트리거하면 초 단위로 요소가 사라지기 전에 요소의 업데이트 된 텍스트를 볼 수 있습니다.

누구나이 현상을 경험 했습니까? 검색은 비슷한 결과를 낳지 못했습니다.

나는 그들의

$("#search_term").text(string); 
$("#search_term").html(string); 
document.getElementById("search_term").innerHTML=string; 

없음 실제 변수로 업데이트하지 않습니다 시도했습니다.

또한 JQuery를 사용하여 텍스트 상자에서 값을 검색하는 방법을 테스트했습니다. 함수를 한 번 실행 한 후에 텍스트 상자의 값을 변경하면 $('#test_box').attr("value"); .text().html()이 여전히 처음 값을 표시합니다.

JQuery에서 버그입니까? 아니면 잘못된 것입니까?

몇 시간 동안 풀려고 노력했습니다. 어떤 조언을 주셔서 감사합니다.

편집 : 이 slideDown()slideUp()에 문제가있는 좁혀. 요소를 제거하고 .show() 만 사용하면 요소가 정상적으로 업데이트됩니다. 강제로 요소를 다시 렌더링하는 방법이 있습니까? 또는 slideDown/Up 대체품을 찾아야합니까?

답변

0

내 대답은 결국 slideDown()의 내부 작업이었습니다.

내가 뭘하고 있었 :

$("#seach_container").slideDown("slow", function() { 
    document.getElementById("body").style.position="fixed"; // to prevent bg scrolling 
    document.getElementById("body").style.overflowY="scroll"; // to prevent doc jumping 
    // Applying these two lines multiple times was giving me the issue of text not updating. 
}); 

나는 확실히 내가 한 번만로 고정 위치를 변경할 수 있도록 부울을 설정 끝났다. 바로 해결했습니다.

매우 구체적인 상황이지만 어쩌면이 솔루션을 사용하면 다른 사람에게 6 시간의 비용을 절약 할 수 있습니다.hah

0

일반적인 이유는 제거/다시 추가 된 요소에 이벤트를 바인딩하여 이벤트가 사라 졌기 때문입니다.

자체에 text을 변경하면이 예에 따라, 무한정 계속 할 수 있어야한다 :

<div id="example"></div> 
<div id="test">Go</div> 

JS :

$('#test').click(function() { 
    $('#example').text(Date.now); 
}); 

가 당신만큼 GO 텍스트를 클릭하여 실행하십시오 여기처럼 : http://jsfiddle.net/5BXqg/

+0

네가 맞아, 거기서 효과가있다. 나는 slideDown()과 slideUp()에 문제가되는 것으로 좁혔다. 만약 내가 그들을 제거하고 사용합니다. 쇼(), 요소가 정상적으로 업데이 트됩니다. 거기에 어떤 생각? – socca1157

+0

아니요. 'slideUp'은 '높이'및 '표시'스타일에만 영향을주기 때문에 이상합니다. 그것은 당신의 사건에 영향을 주어서는 안됩니다. http://jsfiddle.net에서 실용적인 문제의 예를 붙일 수 있습니까? – Fenton