使用过滤方法

时间:2018-06-13 01:26:54

标签: jquery css methods filter selector

想澄清一点,我对jquery非常陌生,并试图学习。

我正在努力寻找所有'输入'在“形式”中出现的元素将班级名称改为' external'用过滤方法。但我得到的答案为0元素,而我在表格元素下有五个输入元素,类外部。

你能帮我吗? 我哪里错了。

这是我的代码,

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript"      src="../jquery/jquery-3.3.1.min.js"></script>

        <link rel="stylesheet" type="text/css" href="../css/style.css" />
        <script>
            $(document).ready(function () {

                var para1 = $("input", $("form"));

//getting answer as 9 input elements
                console.log("pag contains", para1.length, "input elements");

//getting answer as 0 external elements while I am expecting answer as 5 
                alert(para1.filter(".external").length + ' external elements'); 

            });
        </script>

        <title></title>
    </head>
    <body>

        <form class="external">
            <input name="" type="checkbox" />
            <input name="" type="radio" />
            <input name="" type="text" />
            <input name="" type="button" />
            <input name="" type="button" />
        </form>

        <form>
            <input name="" type="checkbox" />
            <input name="" type="radio" />
            <input name="" type="text" />
            <input name="" type="button" />
        </form>


        <input name="" type="checkbox" />
        <input name="" type="radio" />
        <input name="" type="text" />
        <input name="" type="button" />


        <a href="#" class="external">link</a> 
        <a href="#" class="external">link</a> 
        <a href="#"></a> <a href="#" class="external">link</a> 
        <a href="#" class="external">link</a> 
        <a href="#"></a>




    </body>
    </html>

<!-- end snippet -->

3 个答案:

答案 0 :(得分:1)

filter将直接在输入元素中工作,它们都没有外部类(表单有),所以尝试添加:

var para2 = $("input", $("form.external"));

alert(para2.length + ' external elements'); 

答案 1 :(得分:1)

如果您只想获得具有类名为“外部”的父元素的输入元素,您可以获得如下内容:

var para2 = $('form.external > input');
console.log(para2.length);  // 5

另一方面,如果要提取所有输入元素并仅提取它们,可以按如下方式使用.fliter():

var para1 = $('form > input');
var para2 = para1.filter(function() {
              return $(this).parent().hasClass('external')
            }); 

console.log(para1.length);  // 9
console.log(para2.length);  // 5

答案 2 :(得分:0)

如果您想获取页面上的所有输入元素而不考虑类型,请使用$("input");

如果您希望获取所有输入元素,而不考虑类external中的表单标记内的类型,请使用$("form.external input");