알림 리스트 열리는 동작중 문제!
관련링크
http://hayea.cworld.kr/#
200회 연결
본문
제가 초보지만 커뮤니티 홈페이지를 손보고있습니다!
기반은 https://sir.kr/g5_theme/5242 아이스크림 테마를 사용하였습니다
문제는 로고밑에 넣어둔 알림표시인데 slr에서 소스를 받아서 사용을 했는데 알림을 누르면 한번 새로고침처럼 반응하는겁니다
그리고 다시한번 누르면 제대로 열리고요 혹시 무슨 문제인지 알수 있을까요?
<?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(); });
위 코드를 넣어서 허위 링크에 작동되지 않도록 넣어주는게 좋을것 같습니다.
답변을 작성하시기 전에 로그인 해주세요.