javascript - 如何更改通过 XMLHttpRequest 添加的第一个 LI 值的颜色?

标签 javascript php jquery css ajax

我正在开发一个元素,用户可以转到特定页面并浏览特定提要。此提要是通过 XMLHttpRequest 动态添加的,这将给出 #Cat=(value)将参数传递给 PHP 解析器,然后解析器将执行适当的操作。

在此页面中,有几个 LI 元素将用于用户过滤/循环提要。这些 LI 元素对于每个页面来说都是不同的 - 它们是从数据库动态添加的。

只要用户单击特定 LI 或 URL 更改为包含该类别,我就成功地更改了 LI 的颜色。

我是通过以下方式做到这一点的:从数据库下载所有类别,并适本地显示它们。然后,我从 URL 获取 #Cat= 值,并执行 switch 语句 - 如果 Cat 值等于 LI 值,则更改 LI 值的颜色。

但是,我的问题是第一个 LI(无论页面如何,都不是拼写错误)不会改变。例如:一页的网址为 #Cat=Front页面,如果我单击类别“首页”,它不会更改,因为它是第一个 LI。在另一个页面上,URL 也将是 #Cat=Front页面,如果我单击类别“首页”,它会更改颜色,因为它不是第一个 LI。

我认为这是我的 JavaScript/JQuery这就是导致问题的原因。

<强> JavaScript/JQuery:

activeCat("Default");

$(window).on( "hashchange", function()
{
    var Url = window.location.href;
    var Category = Url.substring(Url.indexOf("#Cat=") + 5);
    var Cat = decodeURI(Category);
    activeCat(Cat);
});

function activeCat(cat)
{
    switch (cat)
    {
        case "Default":
            $("#channelCategories li").first().css("color", "#2980b9");
            break;
        case "Front Page":
            $('ul li').each(function(i)
            {
                if($(this).hasClass('channelCategory'))
                {
                    $(this).css("color","black");
                }
            });
            alert("Channel has front-page category");
            $("#channelCategories li:contains('Front Page')").css("color", "#2980b9");
            break;
        case "United Kingdom":
            $('ul li').each(function(i)
            {
                if($(this).hasClass('channelCategory'))
                {
                    $(this).css("color","black");
                }
            });
            $("#channelCategories li:contains('United Kingdom')").css("color", "#2980b9");
            break;

<强> PHP:

while($record = mysqli_fetch_array($myData))
{
    $Category = $record["Category"];
    if($i <= 5)
    {
        $html .=    "<a href='#Cat=$Category' class='noLink' id='$Category'><li class='channelCategory noLink Text'>$Category</li></a>";
    }
    else if ($i > 5)
    {
        //$dropContent[$j] .= "<a href='#Cat=$Category'><li class='channelCategory itemLink Text'>$Category</li></a>";
        $dropContent[$j] .= $Category;
        $j++;
    }
    $i++;
}

我的问题:当类别为默认时,如何更改第一个LI的颜色?另外,在查看第一个 LI 时,如何更改它的颜色?

任何帮助将不胜感激。

谢谢。

编辑:感谢所有试图帮助我的人。我不明白为什么我的代码不起作用,但我已经实现了一个解决方法:当添加第一个 li 时,我向其 anchor 标记添加一个唯一的类名 - 并选择第一个 li 我只是在搜索它类(class)名称。

最佳答案

尝试替换idclass在标签 <a> (带有 id 的 jQuery 选择器始终获取第一项)然后尝试添加/删除类( $( ).addClass('firstDefault') 并使用 css 更改颜色。

调试它,var Cat真的有“默认”值吗?

关于javascript - 如何更改通过 XMLHttpRequest 添加的第一个 LI 值的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890929/

相关文章:

php - 如何读取名称中包含空格和特殊字符的文件?

javascript - 如何使用 Highcharts 实现与此图像类似的球?

php - 我怎样才能使这个字符串从 'textarea' 到一行?

javascript - D3 从纬度和经度寻找路径

javascript - Backbone.js,为什么这个回调被多次触发?

javascript - 序列化后如何通过post发送数据?

php - 在优化阶段,通过引用传递所有数组是否明智?

jquery - html 表单目标_blank 浏览器不允许

javascript - 使用 jQuery 动态排列 div

javascript - CKEDITOR.editor.on 不适用于 replaceAll