0

我想知道如何使用 jQuery 根据链接中的 ID 将 CSS 类添加到链接中。如果 if 语句为真,我不想将 CSS 类“活动”添加到链接中。并不是说如果声明为真,我不想从链接中的类中删除“pFavorite”,我只想添加活动,比如这个class="pFavorite active"我还没有加入 jQuery。我希望我的代码仍然能解释我想要实现的目标。

<?php
foreach($statement as $p)
{
    if(array_search($p['id'], explode(",", $_COOKIE['cookie'])))
    {
    ?>
    <script type="text/javascript">
        $("#<?php echo $p['id']; ?>", ".pFavorite").addClass("active");
    </script>
    <a href="#" class="pFavorite" id="<?php echo $p['id']; ?>">IMG HERE</a>
<?php 
    } 
}
?>
4

3 回答 3

4

首先,您的 jQuery 选择器是错误的,您的意思可能类似于

$("#<?php echo $p['id']; ?>.pFavorite").addClass("active");

上面将匹配具有特定 id和类 pFavorite 的元素,而您的原始选择器将匹配具有类 pFavorite 的所有元素,然后在其中任何一个中查找具有指定 id 的元素,没有找到任何东西(因为目标元素拥有该班级的人之一,而不是后代)。

其次,您不需要类选择器,因为您已经在使用 id 选择器并且 id 是唯一的。所以这将进一步简化为

$("#<?php echo $p['id']; ?>").addClass("active");

最后:为什么要在页面加载使用 jQuery 设置类,当您在 PHP 端拥有所需的所有信息时?你可以简单地做

if(array_search($p['id'], explode(",", $_COOKIE['cookie']))) {
    // Use htmlspecialchars for all HTML output; you may need to specify
    // additional parameters (see the function documentation)
    printf('<a href="#" class="active pFavorite" id="%s">IMG HERE</a>',
           htmlspecialchars($p['id']));
}
于 2012-04-14T23:32:19.890 回答
0

为什么不:

<?php
foreach($statement as $p) {
    if(array_search($p['id'], explode(",", $_COOKIE['cookie']))) {
        echo('<a href="#" class="pFavorite active" id="' . $p['id'] . '">IMG HERE</a>');
    } 
}
?>

?

于 2012-04-14T23:37:39.160 回答
-1
<?php
foreach($statement as $p)
{
    if(array_search($p['id'], explode(",", $_COOKIE['cookie'])))
    {
    ?>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#<?php echo $p['id']; ?>.pFavorite").addClass("active");
        });
    </script>
    <a href="#" class="pFavorite" id="<?php echo $p['id']; ?>">IMG HERE</a>
<?php 
    } 
}
?>
于 2012-04-14T23:31:42.410 回答