我不确定为什么我的简单javascript代码无效。控制台中也没有出现任何错误。任何帮助将不胜感激。
当我点击ID #notificationLink
时,我的ID #notificationContainer
没有出现(我最初在display:none
下的#notificationContainer
中将其放在我的css中
application.html.erb
<ul class="nav_content">
<li class="notification_li">
<span id="notification_count">1</span>
<%= link_to '', '#', id: "notificationLink", class: "fa fa-bell" %>
<div id="notificationContainer">
<div id="notificationTitle">Notifications</div>
<div id="notificationsBody" class="notifications">I am the general notification</div>
<div id="notificationFooter"><a href="#">See All</a></div>
</div>
</li>
</ul>
的application.js
$(document).ready(function() {
$("#notificationLink").click(function() {
$("#notificationContainer").fadeToggle(300);
$("#notification_count").fadeOut("slow");
return false;
});
//Document Click hiding the popup
$(document).click(function() {
$("#notificationContainer").hide();
});
//Popup on click
$("#notificationContainer").click(function() {
return false;
});
});
navigatin.css.scss
/*----- notification: general_notification -----*/
#notification_count {
font-family: 'Lato', sans-serif;
padding: 0px 5px 0px 4px;
background: #b14525;
color: #ffffff;
font-weight: 500;
border-radius: 4px;
position: absolute;
margin-top: 6px;
margin-left: 9px;
font-size: 11px;
}
#notificationLink:hover {
background-color: transparent;
}
#notificationContainer {
background-color: #fff;
border: 1px solid rgba(100, 100, 100, .4);
-webkit-box-shadow: 0 3px 8px rgba(0, 0, 0, .25);
overflow: visible;
position: absolute;
top: 50px;
margin-left: -190px;
width: 400px;
z-index: 1;
display: none; /*info: Enable this after jquery implementation*/
}
#notificationContainer:before { /*info: Popup Arrow*/
content: '';
display: block;
position: absolute;
width: 0;
height: 0;
color: transparent;
border: 10px solid black;
border-color: transparent transparent white;
margin-top: -20px;
margin-left: 188px;
}
#notificationTitle {
font-weight: bold;
padding: 8px;
font-size: 13px;
background-color: #ffffff;
position: fixed;
z-index: 1000;
width: 384px;
border-bottom: 1px solid #dddddd;
}
#notificationsBody {
padding: 33px 0px 0px 0px !important;
min-height: 300px;
}
#notificationFooter {
background-color: #e9eaed;
text-align: center;
font-weight: bold;
padding: 8px;
font-size: 12px;
border-top: 1px solid #dddddd;
}
答案 0 :(得分:1)
您使用的是Turbolinks宝石吗?它打破了一些现有的事件,如$(document).ready(),因为页面永远不会重新加载。
你试过吗
var loaded = function() {
$("#notificationLink").click(function() {
$("#notificationContainer").fadeToggle(300);
$("#notification_count").fadeOut("slow");
return false;
});
//Document Click hiding the popup
$(document).click(function() {
$("#notificationContainer").hide();
});
//Popup on click
$("#notificationContainer").click(function() {
return false;
});
};
$(document).ready(loaded); // Normal non turbolink page load
$(document).on('page:load', loaded); // turbolink page load
我这样说是因为你的javascript在this fiddle中运行正常。我只能假设您link_to
当前的通知页面和文档准备好永远不会被调用。