Javascript $(.class)仅对该类名的第一个标记执行

Javascript $(.class)仅对该类名的第一个标记执行,javascript,jquery,loops,classname,Javascript,Jquery,Loops,Classname,我正在尝试创建一个javascript函数,该函数遍历网页,查找class name“option”的所有标记,并隐藏与下面显示的每个if语句中的文本匹配的标记 在下面的示例中,我尝试使用jquery获取类,但它只获取具有该名称的第一个类,而不是该名称的所有类 我还尝试使用var element=document.getElementsByClassName('option')查看这是否有效,但当我遍历元素列表并将其显示更改为none时,更改没有显示出来 迭代类列表并仅更新部分元素的css的更好

我正在尝试创建一个javascript函数,该函数遍历网页,查找class name
“option”
的所有标记,并隐藏与下面显示的每个if语句中的文本匹配的标记

在下面的示例中,我尝试使用jquery获取类,但它只获取具有该名称的第一个类,而不是该名称的所有类

我还尝试使用
var element=document.getElementsByClassName('option')
查看这是否有效,但当我遍历元素列表并将其显示更改为none时,更改没有显示出来

迭代类列表并仅更新部分元素的css的更好方法是什么?

感谢您的帮助。谢谢

$(document).ready(function(){

if($('.option').html() == "C. "){
    $('.option').css('display','none');
}
if($('.option').html() == "D. "){
    $('.option').css('display','none');
}
if($('.option').html() == "E. "){
    $('.option').css('display','none');
}
if($('.option').html() == "F. "){
    $('.option').css('display','none');
}
});
试试这个:

$(document).ready(function(){
  $('.option:contains("C.")').hide();
  $('.option:contains("D.")').hide();
  $('.option:contains("E.")').hide();
  $('.option:contains("F.")').hide();
});
JQuery选择器
'.option:contains(“C.”)
查找
选项
类中包含文本“C.”的所有标记,而
.hide()
函数隐藏该集合中的每个元素

或者,在单个语句中:

$(document).ready(function(){
    $('.option').filter(function() {
        var html = $(this).html();
        return html === "C." || html === "D." || html === "E." || html === "F.";
    }).hide();
});
$('.option')
查找带有
选项的所有元素。
.filter(function(){…})
调用将列表筛选为筛选函数返回true的元素,然后调用
.hide()
隐藏这些元素

试试这个:

$(document).ready(function(){
  $('.option:contains("C.")').hide();
  $('.option:contains("D.")').hide();
  $('.option:contains("E.")').hide();
  $('.option:contains("F.")').hide();
});
JQuery选择器
'.option:contains(“C.”)
查找
选项
类中包含文本“C.”的所有标记,而
.hide()
函数隐藏该集合中的每个元素

或者,在单个语句中:

$(document).ready(function(){
    $('.option').filter(function() {
        var html = $(this).html();
        return html === "C." || html === "D." || html === "E." || html === "F.";
    }).hide();
});
$('.option')
查找带有
选项的所有元素。
.filter(function(){…})
调用将列表筛选为筛选函数返回true的元素,然后调用
.hide()
隐藏这些元素


如果我了解您想要什么,这应该可以:

$(document).ready(function(){
    $('.option').each( function(i,e) {
        var current = $(e).html();
        if (current == "C" || current == "D" || 
            current == "E" || current == "F") {
           $(e).hide();
        }
});

如果我明白你想要什么,这应该行得通:

$(document).ready(function(){
    $('.option').each( function(i,e) {
        var current = $(e).html();
        if (current == "C" || current == "D" || 
            current == "E" || current == "F") {
           $(e).hide();
        }
});
使用.each函数

$('.option').each(function(index) {
    if($(this).html == "E")
       $(this).hide();
});
使用.each函数

$('.option').each(function(index) {
    if($(this).html == "E")
       $(this).hide();
});

您并不是只得到一个元素,您只是简单地操作jQuery对象中由
$('.option')
调用返回的“第一个”元素。您需要的是jQuery的函数,以便遍历jQuery调用返回的所有元素。另外,长if语句可以缩短,但我想您知道这一点,并且还有其他用途。无论如何,一旦调用了.each,就可以使用回调函数在传递每个元素时对其进行操作。这很像for循环。下例中的参数
i
表示对象迭代时元素的索引值。它是基于0的,换句话说,要通过的第三个选项元素将参数
i
设置为
2

试试这个&祝你好运:

$(function() {
    $(".option").each(function(i) {
        var txt = $(this).text();
        if (txt == "C." || txt == "D." || txt == "E." || txt == "F.")
            $(this).hide();
    });
})
要调查的其他链接

    • 使用此方法获取或设置元素的
      innerHtml
    • 使用此方法获取或设置元素的值
      • 主要是HTML标签
        select
        input
        ,&&&
        textarea

您并不是只得到一个元素,您只是简单地操作jQuery对象中由
$('.option')
调用返回的“第一个”元素。您需要的是jQuery的函数,以便遍历jQuery调用返回的所有元素。另外,长if语句可以缩短,但我想您知道这一点,并且还有其他用途。无论如何,一旦调用了.each,就可以使用回调函数在传递每个元素时对其进行操作。这很像for循环。下例中的参数
i
表示对象迭代时元素的索引值。它是基于0的,换句话说,要通过的第三个选项元素将参数
i
设置为
2

试试这个&祝你好运:

$(function() {
    $(".option").each(function(i) {
        var txt = $(this).text();
        if (txt == "C." || txt == "D." || txt == "E." || txt == "F.")
            $(this).hide();
    });
})
要调查的其他链接

    • 使用此方法获取或设置元素的
      innerHtml
    • 使用此方法获取或设置元素的值
      • 主要是HTML标签
        select
        input
        ,&&&
        textarea
$('.option').html()
将只获取第一个元素的
innerHTML
。如果要查看所有这些,需要使用
$。每个

$('.option').each(function(){
    if($.inArray($(this).html(), ['C', 'D', 'E', 'F']) !== -1){
        $(this).hide();
    }
});
$('.option').html()
将只获取第一个元素的
innerHTML
。如果要查看所有这些,需要使用
$。每个

$('.option').each(function(){
    if($.inArray($(this).html(), ['C', 'D', 'E', 'F']) !== -1){
        $(this).hide();
    }
});

我看到您正在使用jQuery。 当您使用jQuery函数包装某个类时,如$('.option'),您将获得一个元素集,这意味着它将包含所有封装在特殊jQuery类中的元素,这些类为您提供了很多功能

迭代元素集的最佳方法是使用jquery.each()函数, 它将对每个元素应用回调函数。 大概是这样的:

$(document).ready(function(){
    $('.option').each(function() {
        //Here you can access coresponding element to each iteration with this kyeword
        // you can wrap it again like this $(this) and get all of jQuery functionality on that object again
        $(this).hide();
    });
}

我看到您正在使用jQuery。 当您使用jQuery函数包装某个类时,如$('.option'),您将获得一个元素集,这意味着它将包含所有封装在特殊jQuery类中的元素,这些类为您提供了很多功能

迭代元素集的最佳方法是使用jquery.each()函数, 它将对每个元素应用回调函数。 大概是这样的:

$(document).ready(function(){
    $('.option').each(function() {
        //Here you can access coresponding element to each iteration with this kyeword
        // you can wrap it again like this $(this) and get all of jQuery functionality on that object again
        $(this).hide();
    });
}

这是伪代码吗?jQuery对象没有
innerHTML
display
属性。好的,我将代码更改为使用jQuery方法。是的,我知道我做错了,这就是为什么我请求一些帮助。哈哈,我知道了。感谢Jorge Zuverza在没有r的情况下向我指出了这一点