2012-05-15 2 views
0

클릭하면 메시지를 취하는 텍스트 상자로 fancybox를 연 다음 양식을 저장하는 몇 개의 div가 있습니다. 이것은 재사용하고 싶을 때, 즉 동일한 기능과 코드를 여러 형태로 사용하고자 할 때 작동하지 않습니다. 항상 첫 번째 단추 인 것처럼 가장합니다. 그리고 그것을 사용할 때마다 콜백 함수가 실행되는 횟수가 늘어납니다. 아무도 내가 뭘 잘못했는지 알아? 각()을 추가하려고했지만 도움이되지 않았습니다. 코드에서 볼 때jquery로 div를 호출하는 이벤트를 얻는 방법

내가 간단하게 설명 미안 해요, 그것은 많은 명확 (참고 : 나는 출력을 console.log 사용) : http://jsfiddle.net/EvYvc/11/

을 기본적으로 : 나는 무엇을 알고 wan't 요소가 click 함수를 호출하고 속성을 가져옵니다.

답변

0

커플

  1. 당신은 beforeShow
  2. I 돈 이외의 클릭 처리기를 바인딩해야합니다 : 그것은 대신 자신의 것에

    는 클릭 이벤트를 바인딩 시도 이전에 reason_submit2 링크가 클릭되어있는 것을 확인할 수 있다고 생각합니다. 표시

또한, 나는 정의 2 VAR의 및 저장할 링크에 대한 클릭 핸들러 nameform 및 그 fancyConfirm_ok

전체 나중에 코드에서 사용됩니다

$(function() { 
    var r2sName = '', r2sForm = ''; 
    $(".reason_submit2").fancybox({ 
     openEffect: 'none', 
     closeEffect: 'none', 
     'modal': true 
    }).click(function() { 
     var $this = $(this); 
     r2sName = $this.data("name"); 
     r2sForm = $this.data("form");   
    }); 

    jQuery(".fancyConfirm_ok").click(function() { 
     $.fancybox.close(); 

     console.log('form : ' + r2sForm); 
     console.log('name : ' + r2sName); 
     console.log('message : ' + $("[name=reason2]").val()); 

     $($(".reason_submit2").data("form")).append($("<input>").attr("type", "hidden").attr("name", "reason").val($("#reason").val())); 
     $($(".reason_submit2").data("form")).append($("<input>").attr("type", "hidden").attr("name", $(".reason_submit2").data("name"))); 
     //document.forms[$(".reason_submit2").data("form")].submit(); 
    }); 
}); 

DEMO

다른 트릭은 클릭 핸들러 내부에서 클릭 링크에 클래스를 추가하고 해당 클래스를 사용하는 것입니다. nameformfancyConfirm_ok 안에 넣으려면 개인적으로이 방법이 더 좋습니다.

+0

감사합니다. 변수를 로컬 변수로 가져 오는 이유는 무엇입니까? 그것은 내게 오류가 발생합니다 :'Uncaught SyntaxError : 예기치 않은 토큰 ILLEGAL' – olofom

+0

단지'document.ready', jQuery의 버전은 무엇을 사용하고 있습니까? 1.7 버전에서 도입 된 것 같지만 참으로 클로저 안에 var를 정의하고 있습니다. 글로벌보다 낫다. –

+0

아하, 알았어. 1.7.2를 사용하고 있지만'$ (document) .ready (function() { '을 보거나 쓰는 데 익숙해 져서 그렇게 생각하지 않았다.) – olofom

0

나는 FancyForm 플러그인에 대한 전문 지식이 없습니다. 하지만 난 당신이 beforeShow 처리기 안에 바인딩하기 때문에 여러 번 클릭 이벤트를 바인딩하는 것 같아요. 변화의

http://jsfiddle.net/h8sVY/

$(".reason_submit2").each(function() { 
    $(this).fancybox({ 
     openEffect: 'none', 
     closeEffect: 'none', 
     'modal': true 
    }); 
}); 

$(".fancyConfirm_ok").click(function() { 
    $.fancybox.close(); 
    // etc... 
}); 
​ 
+0

여러 콜백과 관련된 문제는 해결되지만 프로파일 만 기록하고 절대 속성은 기록하지 않습니다. – olofom

관련 문제