Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery条件语句?_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript Jquery条件语句?

Javascript Jquery条件语句?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我正在尝试为onepageweb导航编写脚本。主要目标是在单击时更改选择器,第一部分工作正常,但第一个li是站点徽标,所以当我单击徽标时,我希望添加。选择第二个li.: $(document).ready(function (){ $(".main-nav li").click(function () { if (this = $(".main-nav li:first-of-type")) { $(this).next().addClass("

我正在尝试为onepageweb导航编写脚本。主要目标是在单击时更改选择器,第一部分工作正常,但第一个li是站点徽标,所以当我单击徽标时,我希望添加
。选择
第二个li.:

$(document).ready(function (){

    $(".main-nav li").click(function () {
        if (this = $(".main-nav li:first-of-type")) {
            $(this).next().addClass("selected")
                    .siblings().removeClass("selected");
        } else {
            $(this).addClass("selected")
                    .siblings().removeClass("selected");
        }
    });
});
这种情况不起作用

有两个问题:

  • 您正在使用
    =
    进行比较(
    if(this=$(“.main nav li:first of type”))
    )<代码>=
  • 始终是分配。由于无法将此分配给
    ,因此这是一个错误,不会发生任何其他情况

  • 如果您在那里使用
    =
    ==
    ,它将不起作用,因为
    将引用DOM元素,但
    $()
    的返回值始终是一个jQuery对象

  • 你可能想要

    if ($(this).is(".main-nav li:first-of-type"))
    
    …用于测试单击的元素是否与给定的选择器匹配

    旁注:
    :类型
    的第一个应该可以工作,但因为
    ul
    元素只能包含
    li
    元素,
    :第一个
    也可以工作

    实例:

    $(文档).ready(函数(){
    $(“.main nav li”)。单击(函数(){
    if($(this).is(“.main nav li:类型的第一个”)){
    $(this).next().addClass(“选定”)
    .sides().removeClass(“选定”);
    }否则{
    $(此).addClass(“选定”)
    .sides().removeClass(“选定”);
    }
    });
    });
    
    。已选定{
    颜色:红色;
    }
    • 标志项目
    • 第二项
    • 第三项
    两个问题:

  • 您正在使用
    =
    进行比较(
    if(this=$(“.main nav li:first of type”))
    )<代码>=
  • 始终是分配。由于无法将此分配给
    ,因此这是一个错误,不会发生任何其他情况

  • 如果您在那里使用
    =
    ==
    ,它将不起作用,因为
    将引用DOM元素,但
    $()
    的返回值始终是一个jQuery对象

  • 你可能想要

    if ($(this).is(".main-nav li:first-of-type"))
    
    …用于测试单击的元素是否与给定的选择器匹配

    旁注:
    :类型
    的第一个应该可以工作,但因为
    ul
    元素只能包含
    li
    元素,
    :第一个
    也可以工作

    实例:

    $(文档).ready(函数(){
    $(“.main nav li”)。单击(函数(){
    if($(this).is(“.main nav li:类型的第一个”)){
    $(this).next().addClass(“选定”)
    .sides().removeClass(“选定”);
    }否则{
    $(此).addClass(“选定”)
    .sides().removeClass(“选定”);
    }
    });
    });
    
    。已选定{
    颜色:红色;
    }
    • 标志项目
    • 第二项
    • 第三项

    “第一部分工作正常”不,没有。如果单击该元素,则会出现错误,请查看web控制台。您不能将此
    分配给
    是一个对象。。要比较对象,请比较对象的任何唯一属性……您可以检查元素的索引,请参阅jquery索引“第一部分工作正常”不,它没有。如果单击该元素,则会出现错误,请查看web控制台。您不能将此
    分配给
    是一个对象。。要比较对象,请比较对象的任何唯一属性…您可以检查元素的索引,请参阅jquery indexNot Recommendable,但
    this==$(“.main nav li:first of type”)。get(0)
    也可以用于测试…@Rayon:Yup,或
    [0]
    而不是
    。get(0)
    。不推荐,但
    this==$(“.main nav li:first of type”).get(0)
    也可用于测试…@Rayon:Yup,或
    [0]
    而不是
    。get(0)