У меня есть PHP-код, генерирующий ряд кнопок, по которым пользователь может щелкнуть, причем каждая кнопка соответствует оценке ученика. PHP также генерирует jquery, необходимый для нажатия кнопки, чтобы случайным образом выбрать ученика с такой оценкой:
echo "<div id='targetGradeButtons' class='testing'>Randomly select student with target grade: " ;
foreach ($uniquetarget as $i => $target) {
echo "<button id='target-$target'>$target</button> " ; // Generate button for randomly selecting students with certain target
// Create jquery to handle button clicks
echo "<script>
$('#target-$target').click(function(){
randomName('target', '$target');
});
</script>" ;
}
echo "</div>" ;
Это прекрасно работает для большинства оценок. Тем не менее, это не работает для оценок *. Часть случайного селектора имен работает нормально, когда я жестко кодирую A * в качестве оценки, поэтому проблема в том, что приведенному выше коду не удается успешно выбрать кнопку # target-A *. Я считаю, что это потому, что * это особый характер. Как я могу обойти это?
Использование функций PHP для автоматического добавления escape-символов (обратной косой черты), похоже, не помогает.
Вместо того, чтобы привязывать отдельный обработчик к каждому идентификатору, я предлагаю вам дать им один и тот же класс и привязать один обработчик к классу. Затем он может получить идентификатор из целевого элемента.
echo "<div id='targetGradeButtons' class='testing'>Randomly select student with target grade: " ;
foreach ($uniquetarget as $i => $target) {
echo "<button id='target-$target' class='target'>$target</button> " ; // Generate button for randomly selecting students with certain target
}
echo "</div>" ;
// Create jquery to handle button clicks
echo "<script>
$('.target').click(function(){
randomName('target', this.id.split('-')[1]);
});
</script>" ;
Вы можете использовать Атрибут Равный Селектор
$('[id=\"target-$target\"')
Вы можете попробовать использовать селектор совпадения точных идентификаторов.
$('[id="target-A*"]')