2010-06-02 8 views
0

Im 붙어있어, 누군가가 클릭 할 때 변수를 설정 한 다음 변수가 있는지 확인하고 다른 작업을하는 경우에 테스트합니다. 임씨가 지나치게 생각하는 간단한 스크립트는 누군가의 생각을 사랑합니다.jQuery 클릭 이미지 및 클릭/기타

$('.view-alternatives-btn').live('click', function() { 



//$("#nc-alternate-wines").scrollTo(); 
    //$('.nc-remove').toggle(); 
    var showBtn = null; 
    if (showBtn == null) { 
    $('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif"); 
    $('#nc-alternate-wines').show(); 
    showBtn = 1; 
    console.log(showBtn); 
    } 
    else if (showBtn == 1) { 
    $('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif"); 
    $('#nc-alternate-wines').hide(); 
    console.log("this " + showBtn); 
    } 
    return false; 
    }); 
+0

버튼을 3 번 클릭하면 어떻게 될까요? – SLaks

답변

0

변수는 함수 내에서 초기화되고 함수가 끝나면 손실되므로 클릭 할 때 절대로 존재하지 않습니다.

클릭 사이에 저장하려면 클릭 처리기 외부에서 저장하십시오.

var showBtn = null; 

    $('.view-alternatives-btn').live('click', function() { 

    //$("#nc-alternate-wines").scrollTo(); 
    //$('.nc-remove').toggle(); 

    if (showBtn == null) { 
     $('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif"); 
     $('#nc-alternate-wines').show(); 
     showBtn = 1; 
     console.log(showBtn); 
    } 
    else if (showBtn == 1) { 
     $('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif"); 
     $('#nc-alternate-wines').hide(); 
     console.log("this " + showBtn); 
    } 
    return false; 
    }); 
1

당신은 버튼을 클릭하면 항상null로 설정, 그래서 당신은 else if ...

대신 사용할 수있는 전역 변수에 도달하지 않을 것이다, 또는 $.data()

1

showBtn은 로컬 변수이므로 해당 값은 click 이벤트에 걸쳐 유지되지 않습니다.

click 핸들러 외부로 var showBtn = null;을 이동하십시오.

그러나 이것을 수행하는 가장 좋은 방법은 jQuery의 toggle method을 호출하는 것입니다. (togglelive과 함께 사용할 수 없습니다.

0

showBtn은 로컬 변수로 선언하므로 클릭 처리기가 끝날 때까지만 존재합니다. 첫 번째 클릭을 1로 설정하고 두 번째 클릭에서 1을 확인할 수있게하려면 전역 변수가 필요합니다.

0

첫번째 문제점은 가변 showBtn 함수에 local 것을이므로이
둘째로 바로 그것을 확인하기 전에 그 값을 설정 ..마다 스크립트를 실행 재정의 도착 .. 그래서 것 동적 요소를 함축 live 방법으로 결합하기 때문에, 내가 .data() 방법을 사용

항상 .. null로 설정 될 수있다.

$('.view-alternatives-btn').live('click', function() { 

var showBtn = $(this).data('showBtn'); 
//$("#nc-alternate-wines").scrollTo(); 
    //$('.nc-remove').toggle(); 
    if (showBtn) { 
    $('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif"); 
    $('#nc-alternate-wines').show(); 
    $(this).data('showBtn',true); 
    console.log(showBtn); 
    } 
    else{ 
    $('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif"); 
    $('#nc-alternate-wines').hide(); 
    console.log("this " + showBtn); 
    } 
    return false; 
    }); 
0

굉장하고, 모두를 도와 줘서 고마워!

나는 그것을 작동시켰다!

var showBtn = 1; 

    $('.view-alternatives-btn').live('click', function() { 

    //$("#nc-alternate-wines").scrollTo(); 
    //$('.nc-remove').toggle(); 

    if (showBtn == 1) { 
     $('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif"); 
     $('#nc-alternate-wines').show(); 
     showBtn = 0; 
     console.log(showBtn); 
    } 
    else { 
     $('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif"); 
     $('#nc-alternate-wines').hide(); 
     console.log("this " + showBtn); 
     showBtn = 1; 
    } 
    return false; 
    });