Javascript hasClass不';它不能正常工作

Javascript hasClass不';它不能正常工作,javascript,jquery,function,variables,onclick,Javascript,Jquery,Function,Variables,Onclick,我有一个li项目列表,如果发现2个类,我想触发一个按钮单击 当一个列表项有2个类时,我想点击一下触发btn。你们能帮我看看吗 守则: <script type="text/javascript"> $(document).ready(function(){ var $html = $("#my-div ul li"); if ($html.hasClass("current") || $html.hasClass("extra")) { $(".

我有一个li项目列表,如果发现2个类,我想触发一个按钮单击

当一个列表项有2个类时,我想点击一下触发btn。你们能帮我看看吗

守则:

<script type="text/javascript"> 
$(document).ready(function(){ 

    var $html = $("#my-div ul li");
    if ($html.hasClass("current") || $html.hasClass("extra")) {
        $(".btn-1 a").click();}
    else if ($html.hasClass("current") || $html.hasClass("extra2")) {
        $(".btn-2 a").click();}
});
</script>

$(文档).ready(函数(){
var$html=$(“#我的div ul li”);
if($html.hasClass(“当前”)| |$html.hasClass(“额外”)){
$(“.btn-1 a”)。单击();}
else if($html.hasClass(“当前”)| |$html.hasClass(“额外2”)){
$(“.btn-2 a”)。单击();}
});
因此,一个列表项具有classcurrent+extra,另一个列表项具有classcurrent+extra 2

知道我做错了什么吗

编辑:当前它不能正常工作

它当前将始终触发“.btn-1”单击,而不查看其他语句。我认为它只是查看“当前”类,而不是“额外”或“额外2”类是否也在同一li项中。

尝试替换

$html.hasClass("current") || $html.hasClass("extra")

而且

$html.hasClass("current") || $html.hasClass("extra2")

试着替换

$html.hasClass("current") || $html.hasClass("extra")

而且

$html.hasClass("current") || $html.hasClass("extra2")

试试这个:

<script type="text/javascript"> 
$(document).ready(function(){ 

    var $html = $("#my-div ul li.current");
    if ($html.hasClass("extra")) {
        $(".btn-1 a a").click();}
    else if ($html.hasClass("extra2")) {
        $(".btn-2 a").click();}
});
</script>

$(文档).ready(函数(){
var$html=$(“#my div ul li.current”);
如果($html.hasClass(“额外”)){
$(“.btn-1 a”)。单击();}
else if($html.hasClass(“extra2”)){
$(“.btn-2 a”)。单击();}
});
问题是,当您执行
$html.hasClass(“current”)| |…
时,当节点有一个类
current
时,它将始终求值为true,并且不会转到
else
子句

<script type="text/javascript"> 
$(document).ready(function(){ 

    var $html = $("#my-div ul li.current");
    if ($html.hasClass("extra")) {
        $(".btn-1 a a").click();}
    else if ($html.hasClass("extra2")) {
        $(".btn-2 a").click();}
});
</script>

$(文档).ready(函数(){
var$html=$(“#my div ul li.current”);
如果($html.hasClass(“额外”)){
$(“.btn-1 a”)。单击();}
else if($html.hasClass(“extra2”)){
$(“.btn-2 a”)。单击();}
});

问题是,当您执行
$html.hasClass(“current”)| |
时,当节点有一个class
current

时,它将始终求值为true,并且不会转到
else
子句,您将在需要
a和b
的位置对
a或b
进行比较,因此将其更改为:

<script type="text/javascript"> 
$(document).ready(function(){ 

    var $html = $("#my-div ul li");
    if ($html.hasClass("current") && $html.hasClass("extra")) {
        $(".btn-1 a a").click();}
    else if ($html.hasClass("current") && $html.hasClass("extra2")) {
        $(".btn-2 a").click();}
});
</script>

$(文档).ready(函数(){
var$html=$(“#我的div ul li”);
如果($html.hasClass(“当前”)和&$html.hasClass(“额外”)){
$(“.btn-1 a”)。单击();}
else if($html.hasClass(“当前”)和&$html.hasClass(“额外2”)){
$(“.btn-2 a”)。单击();}
});

您正在对需要的
a和b进行比较,因此将其更改为:

<script type="text/javascript"> 
$(document).ready(function(){ 

    var $html = $("#my-div ul li");
    if ($html.hasClass("current") && $html.hasClass("extra")) {
        $(".btn-1 a a").click();}
    else if ($html.hasClass("current") && $html.hasClass("extra2")) {
        $(".btn-2 a").click();}
});
</script>

$(文档).ready(函数(){
var$html=$(“#我的div ul li”);
如果($html.hasClass(“当前”)和&$html.hasClass(“额外”)){
$(“.btn-1 a”)。单击();}
else if($html.hasClass(“当前”)和&$html.hasClass(“额外2”)){
$(“.btn-2 a”)。单击();}
});

问题的根源在于在测试类时使用了or(
|
)而不是and(
&&
)。你在问“李老师是否有最新课程或额外课程”

但是,您也可以对其进行重构,使其更干净:

// first, grab the <li> marked as current
var $current = $('#my-div ul li.current');
// test if we have a match and proceed
if ($current.size()){
    // cache the final target selector (by initializing it to `false` we
    // can later test and only execute the click when we have a match)
    var target = false;

    // now get in to second-level classes (can use either `.is()` or
    // `.hasClass()` (thought I'd show an alternative method as well))
    if ($current.hasClass('.extra')) target = '.btn-1 a a';
    else if ($current.hasClass('.extra2')) target = '.btn-2 a';
    // else if ($current.hasClass('...')) target = '...'; // more tests

    // see if we found a match and click it
    if (target) $(target).click();
}
//首先,抓取标记为当前的
  • var$current=$(“#我的div ul.current”); //测试是否有匹配项并继续 如果($current.size()){ //缓存最终目标选择器(通过将其初始化为'false'we //可以稍后进行测试并仅在匹配时执行单击) var目标=假; //现在进入第二级类(可以使用“.is()”或 //`.hasClass()`(我还想展示另一种方法)) if($current.hasClass('.extra'))target='.btn-1 a'; else if($current.hasClass('.extra2'))target='.btn-2A'; //else if($current.hasClass(“…”)target=“…”;//更多测试 //查看是否找到匹配项并单击它 如果(目标)$(目标)。单击(); }
  • 问题的根源在于在测试类时使用了or(
    |
    )而不是and(
    &&
    )。你在问“李老师是否有最新课程或额外课程”

    但是,您也可以对其进行重构,使其更干净:

    // first, grab the <li> marked as current
    var $current = $('#my-div ul li.current');
    // test if we have a match and proceed
    if ($current.size()){
        // cache the final target selector (by initializing it to `false` we
        // can later test and only execute the click when we have a match)
        var target = false;
    
        // now get in to second-level classes (can use either `.is()` or
        // `.hasClass()` (thought I'd show an alternative method as well))
        if ($current.hasClass('.extra')) target = '.btn-1 a a';
        else if ($current.hasClass('.extra2')) target = '.btn-2 a';
        // else if ($current.hasClass('...')) target = '...'; // more tests
    
        // see if we found a match and click it
        if (target) $(target).click();
    }
    
    //首先,抓取标记为当前的
  • var$current=$(“#我的div ul.current”); //测试是否有匹配项并继续 如果($current.size()){ //缓存最终目标选择器(通过将其初始化为'false'we //可以稍后进行测试并仅在匹配时执行单击) var目标=假; //现在进入第二级类(可以使用“.is()”或 //`.hasClass()`(我还想展示另一种方法)) if($current.hasClass('.extra'))target='.btn-1 a'; else if($current.hasClass('.extra2'))target='.btn-2A'; //else if($current.hasClass(“…”)target=“…”;//更多测试 //查看是否找到匹配项并单击它 如果(目标)$(目标)。单击(); }
  • “目前它不能正常工作”:您能再解释一下吗?它在做什么,应该做什么?对于初学者,您尝试单击
    a
    元素中的
    a
    元素以获得第一条if语句。另外,因为您使用的是or运算符,
    |
    ,我相信if语句将同时对这两个运算符发出。而且,为了明确起见,您希望在页面加载时根据
  • 具有特定类的内容立即单击锚定?您需要了解布尔逻辑是如何工作的。这是一个非常简单的问题,混淆了
    |
    &&
    “目前它不能正常工作”:您能再解释一下吗?它在做什么,应该做什么?对于初学者,您尝试单击
    a
    元素中的
    a
    元素以获得第一条if语句。另外,因为您使用的是or运算符,
    |
    ,我相信if语句将同时对这两个运算符发出。而且,为了清楚起见,您希望在页面加载时根据
    <