Получить значение данных для отображения в оповещении - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующий код.Мне нужно получить значение того, что есть в .data.Он отображается пустым, хотя я знаю, что он имеет значение, когда я показываю его в форме.

$('#Settings').on('click', '#senpop', function(e) {
  e.preventDefault();
  $('.field-validation-error').find('span').text('');
  $('#SensName').text($(this).data('sensname'));
  $('#SelectSenID').val($(this).data('sens'));

  // Note that the above code updates the values fine for the elements above. Below I am trying to get the value of "sensname" to show up in an alert but shows blank. 
  // I know there is a value because it does show up properly on the form but not able to 
  // retrieve it here. 

  var sens = $("#senpop");
  var inf = sens.data("sensname");
  alert(inf);

  $('#ViewModal').modal({
    backdrop: 'static',
    keyboard: false,
    show: true,
  });

});
<div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
<div class="mobile_data">
  <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
</div>

1 Ответ

0 голосов
/ 07 июня 2018

Мне удалось получить печать атрибутов данных в Chrome и Firefox со следующей настройкой:

Первое - да, лучше не использовать alert() для такой отладки.Всегда по умолчанию console.log().

Далее, я предполагаю, что ваша HTML структура выглядит примерно так:

<div id="Settings">
  Settings
  <div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
  <div class="mobile_data">
    <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
  </div>
</div>

... потому что вы привязываете обработчик click к#Settings элемент.Убедитесь, что элемент #Settings не является <a>, потому что он недопустим для вложения тегов <a>.

Далее, убедитесь, что jQuery и ваш js-скрипт расположены чуть выше закрывающего </body> тег, который является лучшей практикой

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="/js/yourscript.js"></script>
</body>

... или, оберните ваш скрипт в document.ready, если вы не можете добавить скрипт в тело по любой причине:

$( document ).ready(function() {
  // your js code
});

Итак, это рабочий код:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  </head>
  <body>
    <div id="Settings">
      Settings
      <div class="hidden-lg hidden-sm hidden-md header_mobile">Name</div>
      <div class="mobile_data">
        <a href="#" id="senpop" data-sens="@item.Sens" data-sensname="@item.SensName">@item.Name</a>
      </div>
    </div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
  <script>
    $('#Settings').on('click', '#senpop', function(e) {
      e.preventDefault();
      console.log('#settings clicked');
      $('.field-validation-error').find('span').text('');
      $('#SensName').text($(this).data('sensname'));
      $('#SelectSenID').val($(this).data('sens'));

      // Below I am trying to get the value of sensor to show up in an alert but shows blank.
      // I know there is a value because it does show up properly on the form but not able to
      // retrieve it here.

      var sens = $("#senpop");
      var inf = sens.data("sensname");
      console.log(inf);

      $('#ViewModal').modal({
        backdrop: 'static',
        keyboard: false,
        show: true,
      });
    });
  </script>
  </body>
</html>

Вот скриншот запуска этого кода и нажатия #senpop:

screenshot of working page in chrome and firefox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...