jquery 질문

jquery 질문

QA

jquery 질문

본문

Ajax 를 통해 list 를 들고 왔고..

들고온 list 에서 각각의 게시글을 .hover( 하였고 hover 상태에서 

list 각각에 존재하는 수정 이미지가 존재 합니다.

 

해당 이미지를 클릭 하는 .click 이벤트를 걸었고 click 시

게시글이 1.2.3.4.5. 있다 쳤을대 2번을 클릭하면 신규 글쓰기가 2번밑으로 3번 위로 나타나며 3.4.5 번은 4.5.6번이 되도록 처리 했는데요..

 

웃긴게 console.log를 찍은 결과 한가지에 명령을 내려도 무조건 적으로 5번이 돌아버립니다.

 

소스


$('.view_item').mouseover( function (){
    var view_item_id = $(this).attr('id');
    var view_item_idx = $(this).attr('idx');
    var mc_survey_type_idx = $('#mc_survey_type_'+view_item_idx).val();
    $( "#"+view_item_id ).hover(
    function() {
        $( this ).css( 'box-shadow', '0px 0px 5px rgba(0,0,0,0.2)' );
        $("#q_plus"+view_item_idx).show();
        $( ".q"+mc_survey_type_idx+"_title_list" ).click( function(){
            chk_change3(view_item_idx);
        });
        $("#additi1_"+view_item_idx).click(function(){
            var total = $('#total').val();
            var this_num = $('#mc_left_num_'+view_item_idx).val();
            $('#question_type').val('single');
            var new_type = 'single';
            var poll_idx = $('#poll_idx').val();
            open_list4(poll_idx, new_type, this_num, total);
        });
    }, function() {
        $( this ).css( 'box-shadow', '' );
        $("#q_plus"+view_item_idx).hide();
    });
});
 

list hover에 대한 jquery구요..

open_list4 함수를 호출하도록 명령했을때

 


function open_list4(poll_idx, next_type, num, now_total){
    // list 보기 
    //console.log(poll_idx+", "+next_type+", "+num+", "+now_total);
    var question_type = $('#question_type').val();
    var next_num = Number(num) + Number("1");
    var plus_total = Number(now_total) + Number("1");
    var plus_num = Number(num) + Number("2");
    var plus_nums = Number(num) + Number("2");
    var x = "";
    var y = "";
    for( x = next_num; x <= now_total; x++ ){
        $('#view_item'+x).attr("idx",plus_num);
        plus_num++;
    }
    //console.log("next_num = "+next_num);
    //console.log("now_total = "+now_total);
    var z = now_total;
    for( y = plus_total; y >= next_num; y-- ){
        
        var view_item_idx = $('#view_item'+z).attr('idx');
        var view_item_name = "view_item"+view_item_idx;
        if(y == view_item_idx){
            console.log(y+" = "+view_item_idx);
            //console.log("view_item_name = "+view_item_name);
            //console.log('#view_item'+y);
            $('#view_item'+z).attr("id",view_item_name);
            z--;
        }
        
        plus_nums++;
    }
}

 

입니다.

open_list4 함수에서 for 문이 돌기는 하지만 실제로

for(y=5; y>= 2; y++) 임에도 불구하고 console.log 는

5,4,3,2

5,4,3,2

5,4,3,2

5,4,3,2

이러게 돌아버립니다.ㅜㅜ

 

 

이유를 아시는 분들 조언좀 부탁드리겠습니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 3

마우스 오버시 클릭 이벤트를 등록하고 계신데

마우스 오버에 콘솔을 찍어보시면 아시곘지만 오버때 단 한번만 이벤트가 발생하는게 아니라 그 위에서 움직이면 계속 이벤트가 발생합니다.
이 때문인지는 모르겠으나 마우스 최초 오버시에만 이벤트 등록이 처리되게 하셔야 할겁니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 17,127
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT