2012-04-26 3 views
0

jQuery에 새로 도입되었습니다.다른 함수에서 호출 할 때 함수가 실패합니다.

한 함수의 결과를 다른 함수로 가져 오는 데 문제가 있습니다.

그런 다음 텍스트는 var로 텍스트를 populateMessage() 함수에 전달하고 텍스트를 텍스트 상자에 씁니다.

텍스트를 가져올 수 있으며 populateMessage 함수에 전달되지만 함수가 완전히 실행되지 않고 텍스트 상자가 채워지지 않습니다. document.ready에서 populateMessage 함수를 래핑하고 .text ('test')와 같은 것을 씁니다. 그것은 효과가있을 것이다.

어떻게하면됩니까? 도움

$(document).ready(function() { 
    getClickedInvite(); 
}); 

//gets clicked item template and sends it to message box 

function getClickedInvite() { 
    $('.card').click(function() { 
     var selectedMessage = $(this).text(); 
     alert(selectedMessage); 
     populateMessage(selectedMessage); 
    }); 
} 

function populateMessage(selectedMessage) { 
    alert(selectedMessage + ' has been sent to the message box ') 
    var inviteMessageBoxId = $('#inviteMessageBox').find('textarea').attr('id'); 
    alert(inviteMessageBoxId); 
    $('#' + inviteMessageBoxId).text(selectedMessage); 
} 
+0

'.card' 클래스의 멤버를 클릭하면 경고 메시지가 나옵니까? –

+0

답변 목록에서 제거 된 것으로 보이는 대답을 기반으로 코드를 정리했습니다. 나는 getClickedInvite를 준비된 문서로 옮겼다. 큰 문제는 textare가 HTML 편집기 인 내 환경이라고 생각합니다. 편집기가 일반 텍스트 영역에있을 때 작동하지만 리치 편집기 모드에서는 작동하지 않습니다. –

답변

0

에 대한

덕분에 그런 기능을 확장 할 필요가 없습니다. 그리고 당신이 manual를 읽는다면, 그것은

가 선택, jQuery를 객체 또는 요소에 의해 필터링 일치하는 요소의 현재 설정, 각 요소의 자손을 얻기 말한다.

SO .find()은 항상 단일 요소를 반환하지 않습니다.

$('#inviteMessageBox').find('textarea')[0].text(selectedMessage); 

또는 id을 점점 정말 필요한 경우 다음

var id = $('#inviteMessageBox').find('textarea')[0].attr('id'); 
$("#"+id").text(selectedMessage); 
+0

고마워, 좋은 분. –

+0

@MarkHollas, 작동 했습니까? – Starx

+0

다른 주석에서 언급했듯이 DotNetNuke에 있으며 textarea는 HTML 편집기 컨트롤이므로 요소 ID가 DNU 컨트롤 '정크'앞에 붙어 있으므로 먼저 텍스트 영역의 동적 ID를 얻어야합니다. 나는 당신이 가지고있는 것으로 바꾸려고했지만 작동하지 않았다. 나의 제한된 지식으로 –

0
jQuery를 사용하면 이런 일에 populateMessage 기능을 변경할 수 있도록 'ID'로 모든 것을 참조 할 필요가 없습니다

: 모든 요소에 클릭 이벤트를 바인드하려고 할 때 때문에

function populateMessage(selectedMessage) { 
    $('#inviteMessageBox') 
     .find('textarea') 
     .text(selectedMessage); 
} 
+0

고마워. 내 경우는 dotnetnuke를 사용하고 textbox (html 편집기)는 컨트롤입니다. 렌더링시 ID가 DNN 관련 '정크'묶음으로 앞당겨 지므로 먼저 동적으로 생성 된 ID를 가져야합니다 ... –

0

$(document).ready() 후 호출 이유는이 유일한 작품이다 s는 클래스 .card과 함께 아직 페이지에 실제로 존재하지 않으므로 바인딩이 실패합니다.

$(document).ready(); 이후에 DOM을 완전히 작성 했으므로 모든 요소가 페이지에 있고 자신을 바인딩 할 준비가되었음을 알릴 수 있습니다.

function sayHello() { 
    alert('hello'); 
} 

$(document).ready(function() { 
    $('.button1').click(sayHello); 
    $('.button2').click(sayHello); 
    $('.button3').click(sayHello); 
}); 

이 방법은 당신의 코드를 훨씬 청소기 유지해야합니다

이 주위에 얻을 수있는 가장 좋은 방법은 바로 당신의 기능을 정의하고 문서가 너무 좋아, 준비가 알면 요소를 결합하는 것입니다. 모든 함수를 먼저 참조하고 이벤트를 마지막으로 바인드하십시오.

+0

건배, 이건 좋은 학습입니다. –

+0

@MarkHollas 감사합니다. 최고의 답을 표시하고 도움이되는 답변을 +1하십시오. – wilsonpage

관련 문제