根据ID添加CSS类

时间:2012-04-14 23:26:33

标签: php jquery css class

我想知道如何使用jQuery基于链接中的ID为链接添加CSS类。如果if语句为true,我不想将CSS类“active”添加到链接中。不是说我不想从链接中的类中删除“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 
    } 
}
?>

3 个答案:

答案 0 :(得分:4)

首先你的jQuery选择器是错误的,你可能意味着与

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

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

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

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

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

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']));
}

答案 1 :(得分: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>');
    } 
}
?>

答案 2 :(得分:-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 
    } 
}
?>