미채택 완료

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번이 돌아버립니다.

소스

Copy
$('.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 함수를 호출하도록 명령했을때

Copy
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개

우선 답변 감사합니다. 그냥 클릭이벤트에 .one 걸어버렸어요..

이유는 못찾겠네요..ㅎㅎㅎ

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

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

목록에선 글번호와 같이 구분할 수 있는 매개로 호출해야 하는거 아닌가 싶네요..

답변을 작성하려면 로그인이 필요합니다.