У меня есть элемент HTML, и я хочу отобразить предупреждение, когда я нажимаю на элемент «я». Когда div с классом "innerNotif" помещается непосредственно в DOM, он работает, но когда я добавляю div с socket.on, он не работает. Я думаю, что это потому, что элемент не находится в DOM, когда он загружается.

<span class="disNone notificationMenuCss" id="notifBar">
   <div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>

<script>
var socket = io.connect();
var notifId = 0;

socket.on('libCourtLotChangeServ', function(){
        var numItems = $('.innerNotif').length +1;

    $( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
    notifId++;
    $("#notificationNumber").html(numItems);
});
</script>

<script>
    Polymer({
        alertNotif: function() {
            alert('Test');
        }
    });
</script>
0
alexzerah 31 Авг 2017 в 15:31

3 ответа

Лучший ответ

Я наконец-то нашел решение, добавив функцию onclick родительского элемента и добавив в него addEventListener

<paper-toolbar class="header" on-click="removeNotif">
    <div class="notification" on-click="notificationMenu">
        <span class="notificationSpan" id="notificationNumber"></span>
        <span class="disNone notificationMenuCss" id="notifBar"></span>
    </div>
</paper-toolbar>

<script type="text/javascript">
var socket = io.connect();
var notifId = 0;

socket.on('libCourtLotChangeServ', function(contrat){
    var numItems = $('.innerNotif').length +1;
    $( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId +'" style="width: 96%; height: 30px; text-align: left; border: 1px solid black; background-color: white; padding: 3px;">' + 'Le contrat <br>' + contrat + ' a été modifié ' + '<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
    notifId++;
    $("#notificationNumber").html(numItems);
});
</script>

<script>
 Polymer({
     removeNotif: function() {
         var idValue = Number(($(".innerNotif:last").attr("id")).replace("id", "0")); 
         console.log(idValue);
         for (var numItemsCheck = 0; numItemsCheck <= idValue; numItemsCheck++){ 
             document.querySelector("#id" + numItemsCheck).addEventListener("click", function(){
                 var numItems = $('.innerNotif').length -1;
                 $("#notificationNumber").html(numItems);
                 this.remove();
              })
          }
      }
  });
  </script>
0
alexzerah 31 Авг 2017 в 15:13

Попробуйте этот код, который я отредактировал.

<span class="disNone notificationMenuCss" id="notifBar">
   <div class="innerNotif" id="idNatif">1<i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>
</span>

<script>
var socket = io.connect();
var notifId = 0;

socket.on('libCourtLotChangeServ', function(){
        var numItems = $('.innerNotif').length +1;

    $( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>');
    notifId++;
    $("#notificationNumber").html(numItems);
});
</script>

<script>
    Polymer({
        alertNotif: function() {
            alert('Test');
        }
    });
</script>
0
Manvendra Rajpurohit 31 Авг 2017 в 12:48

Символы новой строки разбивают строку, которую вы хотите добавить.

Это должно работать:

$( "#notifBar" ).append( '<div class="innerNotif" id="id' + notifId + '"><i class="fa fa-times" on-click="removeNotif" aria-hidden="true"></i></div>'); 
2
PabloCC 31 Авг 2017 в 12:43