For me your code looks very pretty.
Sometimes I write in this manner
Dnianas.Notification = {
elements: {
opennotifiiSel: '#opennotifii', //also rename selectors to camelCase, for example
boxsendnotifSel: '#boxsendnotif',
boxnotificationsusersSel: '.boxnotificationsusers'
},
constants: {
NOTIFICATION_FADE_OUT: 200
},
URL: {
markAsRead: '/notifications/read',
},
init: function() {
this.bindEvents();
},
bindEvents: function() {
$(document).on('click', this.elements.opennotifiiSel, this.markAsRead.bind(this));
},
countNotifications: function() {
var ids = [];
// Add unread notifications to the ids array.
$(this.elements.boxnotificationsusersSel)
.children() //why we use children() before find()?
.find(this.elements.boxsendnotifSel)
.each(function collectboxsendnotifIds() {
if ($(this).data('read') === 0) {
ids.push($(this).data('id'));
}
});
return ids;
},
markAsRead: function() {
var self = this;
var ids = this.countNotifications();
if (ids.length > 0) {
$.ajax({
url: self.URL.markAsRead,
data: {
notifications: ids,
_token: token,
}
}).then(function(data) {
self.renderNotificationCount(data);
});
}
},
renderNotificationCount: function(data) {
if (data.seen) {
$(this.elements.opennotifiiSel + ' .not_nu1').fadeOut(this.constants.NOTIFICATION_FADE_OUT);
}
}
};