알림 리스트 열리는 동작중 문제!

알림 리스트 열리는 동작중 문제!

QA

알림 리스트 열리는 동작중 문제!

답변 1

본문

제가 초보지만 커뮤니티 홈페이지를 손보고있습니다!

기반은 https://sir.kr/g5_theme/5242 아이스크림 테마를 사용하였습니다

 

문제는 로고밑에 넣어둔 알림표시인데 slr에서 소스를 받아서 사용을 했는데 알림을 누르면 한번 새로고침처럼 반응하는겁니다

그리고 다시한번 누르면 제대로 열리고요 혹시 무슨 문제인지 알수 있을까요?

http://hayea.cworld.kr/

 

 


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가;
add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/alarm_in/style.css">', 0);
if ($member['mb_id']) {
    $alarm_que = "select count(al_id) as cnt from {$g5['g5_alarm_table']} where to_mb_id = '{$member['mb_id']}' and al_msg_check = 'n'";
    $alarm_cnt = sql_fetch($alarm_que);
    if ($alarm_cnt['cnt'] > 0) {
        $alarm_list = array();
        $que = "select * from {$g5['g5_alarm_table']} where to_mb_id = '{$member['mb_id']}' and  al_msg_check = 'n'";
        $res = sql_query($que);
        for($i=0;$row=sql_fetch_array($res);$i++) {
            $alarm_list[] = $row;
        }
        if ($alarm_cnt['cnt'] > 9) {
            $alarm_cnt['cnt'] = '9+';
        }
    }
?>
<p class="news" style="
    background: #ffffff;
    padding: 10px;
    border-radius: 5px;"> <a href="#"><i class="fa fa-bell" aria-hidden="true"></i>알림</a><?php if($alarm_cnt['cnt']) { ?><span class="arm_count">  <?php echo $alarm_cnt['cnt'] ?></span><?php } ?></p>
<div id="news">
        <?php /*?><h2>새소식<span class="arm_count"><?php echo $alarm_cnt['cnt']?></span></h2><?php */?>
        <div id="ol_arm">    
            <ul id="dd_arm" style="display: none; 
                                   padding: 10px;
    background: #fff;
    border-radius: 5px;
                                   margin-top: -10px;
"">
               <?php
                for($i=0;$i<count($alarm_list);$i++) {
                $link_url = get_pretty_url($alarm_list[$i]['al_msg_table'], $alarm_list[$i]['al_msg_id'],'#c_'.$alarm_list[$i]['al_msg_id']);
                if ($alarm_list[$i]['al_msg_type'] == 'm') { //쪽지
                    $link_url = G5_BBS_URL.'/memo_view.php?me_id='.$alarm_list[$i]['al_msg_id'].'&kind=recv';
                    $msg = '<span class="from_nick">'.$alarm_list[$i]['from_mb_nick'].'</span>님이 쪽지를 보내셨습니다.';
                } elseif ($alarm_list[$i]['al_msg_type'] == 'c') { //댓글
                    $msg = '<span class="from_nick">'.$alarm_list[$i]['from_mb_nick'].'</span>님이 '.$alarm_list[$i]['al_msg_subject'].'에 댓글을 남기셨습니다.';
                } elseif ($alarm_list[$i]['al_msg_type'] == 'a') { //좋아요, 싫어요
                    $msg = '<span class="from_nick">'.$alarm_list[$i]['from_mb_nick'].'</span>님이 '.$alarm_list[$i]['al_msg_subject'].'를 남기셨습니다.';
                } else { //답글
                    $msg = '<span class="from_nick">'.$alarm_list[$i]['from_mb_nick'].'</span>님이 '.$alarm_list[$i]['al_msg_subject'].'에 답글을 남기셨습니다.';
                }
                echo '<li class="alarm_layer_list" data-href="'.$link_url.'" data-msgtype="'.$alarm_list[$i]['al_msg_type'].'" data-alid="'.$alarm_list[$i]['al_id'].'" style="
    padding: 5px;
" >'.$msg.'</li>';
            }
            if($i == 0) {
                echo '<li class="arm_empty" style="
    padding: 5px;
">아직 새로운 알림이 없습니다.</li>';
            }
            ?>
                <?php /*?><li><a href="<?php echo G5_PLUGIN_URL ?>/alarm_in/alarm_list.php" class="view_all" style="
    padding: 5px;
"><strong>전체보기</strong></a><?php */?><a href="#" class="read_all" style="
    padding: 5px;
"><strong>모두읽음</strong> (읽은 알림은 더 이상 볼 수 없습니다.)</a></li>
            </ul>
        </div>
    </div>
<script>
$(function() {
    $('p.news a,p.news span').on('click', function(e) {
        $("#news").fadeToggle(100);
        $("#account").fadeOut(100);
        var show = $("#dd_arm").css('display');
        if (show == 'none') {
            //ajax_msgload();
            $("#dd_arm").show();
        } else {
            //$("#dd_arm").hide();
        }
    });
    $('.read_all').on('click', function() {
        $.ajax({
            type: "POST",
            data: {act:'alarm_read_all'},
            async: false,
            url: '<?php echo G5_PLUGIN_URL; ?>/alarm_in/ajax.alarm.php',
            success: function(data) {
                //console.log(data);
                html = '';
                html += '<li class="alarm_layer_empty">새로운 알람이 없습니다.</li>';
                $('#alarm_layer > ul').html(html);
                $('.alarm_cnt').html('0');
            }
        });
    });
    $('.alarm_layer_list').on('click', function() {
        var $this = $(this),
            href = $this.data('href'),
            msgtype = $this.data('msgtype'),
            alid = $this.data('alid');
        $.ajax({
            type: "POST",
            data: {act:'alarm_read', alid:alid},
            async: false,
            url: '<?php echo G5_PLUGIN_URL; ?>/alarm_in/ajax.alarm.php',
            success: function(data) {
                console.log(data);
                if (msgtype == 'm') { //쪽지
                    win_memo(href);
                    return false;
                } else {
                    document.location.href = href;
                    return false;
                }
            }
        });
    });
});
</script>
<?php } ?>

이 질문에 댓글 쓰기 :

답변 1

답변이 늦었는데, 보셨으면 좋겠네요 :-)


 <a href="#"><i class="fa fa-bell" aria-hidden="true"></i>알림</a>
알림 부분에 a 태그로 돼 있어서 그래요.  html5에서 href="#id"를 넣으면 해당 id값을 가진 엘리먼트 위치로 이동 할 수 있고, #만 넣으면 상단으로 이동해서 <a href="#"></a> 많이들 쓰는데,  지양하는 방법이예요. hover 때문에 넣은듯 한데, <a></a>가 아닌 다른 태그를 넣어주던가 (button etc)

<a href="javascript:void(0);"><i class="fa fa-bell" aria-hidden="true"></i>알림</a>
같이 의미없는 태그로 쓸 수 있도록 바꿔주시던가. 그것도 귀찮으면 공통 부분에

$('a[href="#"]').click(function(e) { e.preventDefault(); });
위 코드를 넣어서 허위 링크에 작동되지 않도록 넣어주는게 좋을것 같습니다.
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,178
© SIRSOFT
현재 페이지 제일 처음으로