Событие jquery onclick не работает для ссылки

у меня есть скрипт поверх моей jsp-страницы прямо перед </head>. все работает как положено, кроме события onclick для <a>. это мой код:

$(document).ready(function () {
  $.ajax({
    url: 'paging',
    type: 'GET'
  }).success(function (data) {
    $('#pagination').empty();
    $.each(data, function (index, user) {
      $('#pagination').append($('<tr>')
        .append($('<td>').append($('<a>').attr({
          'onclick': 'GoToProfile(' + user.username + ')'
           }).text(user.username)))
        .append($('<td>').text(user.email)))
      });
    
      $("#sales").dataTable({
        "sPaginationType": "full_numbers",
        "bJQueryUI": true,
      });
   });
});
    
function GoToProfile(user) {
  window.location.href = "/profile/" + user;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

почему функция GoToProfile не работает, когда я нажимаю на имя пользователя?. я помещал его в разные положения, внутри $(document).ready, снаружи и т. д., но не работал.

Вы, вероятно, получаете синтаксические ошибки в консоли браузера.

Pointy 19.04.2019 21:16

После исправления синтаксических ошибок измените: .attr({ 'onclick': 'GoToProfile(' + user.username + ')' } на: .on('click', function(){GoToProfile(ser.username);})

Scott Marcus 19.04.2019 21:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я бы порекомендовал этот подход, хотя остальная часть кода написана не очень хорошо. Я не проверял, но должно работать.

$(document).ready(function () {
  function GoToProfile(user) {
    window.location.href = "/profile/" + user;
  }
  $.ajax({
    url: 'paging',
    type: 'GET'
  }).success(function (data) {
    $('#pagination').empty();
    $.each(data, function (index, user) {
      $('#pagination').append($('<tr>')
        .append($('<td>').append($(`<a data-username = "${user.username}">`).text(user.username)))
        .append($('<td>').text(user.email)))
      });

      $("#sales").dataTable({
        "sPaginationType": "full_numbers",
        "bJQueryUI": true,
      });
   });
  $("#pagination").on("click", "a", function(){
    const $this = $(this);
    GoToProfile($this.attr(data-username));
  });
});
Ответ принят как подходящий

как сказал Скотт Маркус:

attr({'onclick': 'GoToProfile(' + user.username + ')'}) 

следует изменить на

on('click', function(){GoToProfile(user.username)})

сбивает с толку то, что я использовал точно такой же синтаксис для своих ссылок в других местах проекта, и они работали отлично. Я просто не знаю, почему это не сработало здесь!

Другие вопросы по теме