Невозможно вызвать кнопки, созданные php

0

Мой php-скрипт создает таблицу со списком курсов и кнопок в каждой строке. Очевидно, что каждый набор кнопок должен делать то же самое, но для этой конкретной строки. Каждая строка содержит кнопку с классом = 'add_button', class= 'wait_button' и class= 'detail_button'. Значение для каждой кнопки - это идентификатор курса этой конкретной строки. Этот скрипт отправляется обратно на главную страницу через ajax и вставлен в середину страницы.

Когда я нажимаю на одну из этих кнопок, я хотел бы запустить базовое событие jquery, чтобы проверить, что каждая кнопка правильно установлена. Однако мой текущий код, похоже, не работает. Я видел это в подобном посте, пробовал решение и ничего не получал. Поэтому я оставил свой первоначальный сценарий. Спасибо за любые предложения.

courseDb.php:

while($row = mysqli_fetch_array($findCourses)){
echo "<tr>".
"<td><h3>" . $row['courseDept']. $row['courseNumber']. "-".$row['courseSection']."</h3>".
"<p>" . $row['courseName']."</p>".
"<td><p>Course Capacity: " . $row['courseSize']."/". $row['courseCurrent']."</p>".
"<p>Waitlist Capacity: " . $row['waitSize']."/". $row['waitCurrent']."</p></td>".
"<td><button class='add_button' value='".$row['courseID']."'>Add to Schedule</button></td>".
"<td><button class='wait_button' value='".$row['courseID']."'>Add to Waitlist</button></td>".
"<td><button href='#coursesDetailStud'  class='detail_button'  value=".$row['courseID'].">View detail</button></td>".
"</tr>";        

}

courses.php:

$(".add_button").click(function(){
var clicked = $(this);
alert(clicked.val());
});
  • 0
    Можете ли вы проверить полученный HTML в файле courseDb.php? Я подозреваю ошибку в последнем значении = ". $ Row ['courseID']." это должно было быть значение = '". $ row [' courseID ']."'
Теги:

1 ответ

2
Лучший ответ

Этот скрипт отправляется обратно на главную страницу через ajax и вставлен в середину страницы.

Мне кажется, что эти строки (и кнопки) возвращаются AJAX и создаются после загрузки страницы.

Как обычно, любой скрипт, помещенный непосредственно в файлы PHP или HTML, выполняется при загрузке страницы. Если вы просто используете метод click, он привязывает события только к элементам, уже существующим на странице, и не имеет никакого эффекта, если HTML-элементы будут добавлены позже с помощью AJAX и DOM manuipulation.

Вы будете нуждаться on с делегацией, чтобы сделать ваше мероприятие будет связано даже для элементов, загруженных впоследствии. (Предполагая, что родительская table существует в HTML/PHP)

$('table').on('click', '.add_button', function(){
    //your code
});
  • 0
    Краткое описание: Материал порождена AJAX использовать on если не использовать click

Ещё вопросы

Сообщество Overcoder
Наверх
Меню