如何处理 id 选择器中的星号 *

How to handle an asterisk * in an id selector

我有 PHP 代码生成一行按钮供用户单击,每个按钮对应一个学生的成绩。 PHP 还生成 jquery 需要点击按钮随机 select 具有该成绩的学生:

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* 成绩。当我将 A* 硬编码为成绩时,随机名称 select 或其一部分工作正常,因此问题在于上面的代码未能成功 select #target-A* 按钮。我相信这是因为 * 是一个特殊字符。我该如何解决这个问题?

使用PHP函数自动添加转义字符(反斜杠),似乎没有帮助。

您可以使用 Attribute Equals Selector

$('[id=\"target-$target\"')

与其为每个 ID 绑定一个单独的处理程序,我建议您给它们全部相同的 class,然后将一个处理程序绑定到 class。然后它可以从目标元素中获取 ID。

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 选择器。

$('[id="target-A*"]')

示例:https://jsfiddle.net/DinoMyte/1a6mwb13/3/