Javascript hasClass不';它不能正常工作
我有一个li项目列表,如果发现2个类,我想触发一个按钮单击 当一个列表项有2个类时,我想点击一下触发btn。你们能帮我看看吗 守则: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")) { $(".
<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”)| |
时,当节点有一个classcurrent
时,它将始终求值为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语句将同时对这两个运算符发出。而且,为了清楚起见,您希望在页面加载时根据<