Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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,我尝试使用jQuery的每个函数: 我有一个列表,我想为不同的列表元素执行不同的javascript 以下是html代码: <ul id="list-with-stuff"> <li class='non-stuff'>foo</li> <li>bar</li> </ul> 请在JSFIDLE上查看以下内容: 我遇到的问题是无法确定选择了哪个列表元素,因此无法运行不同的javascript。例如,我想

我尝试使用jQuery的每个函数:

我有一个列表,我想为不同的列表元素执行不同的javascript


以下是html代码:

<ul id="list-with-stuff">
    <li class='non-stuff'>foo</li>
    <li>bar</li>
</ul>

请在JSFIDLE上查看以下内容:



我遇到的问题是无法确定选择了哪个列表元素,因此无法运行不同的javascript。例如,我想为列表中的第一个元素运行“TRUE”警报,但它仅在当前状态下运行“FALSE”警报

我知道这一定是可能的,但是我对Javascript和jQuery缺乏经验,也无法通过搜索互联网来解决问题

使用上述代码,如果您使
ul
具有类
'non-stuff'
,则它会输出“TRUE”警报消息,否则会弹出“FALSE”警报


因此,如果你知道最好的实践方法,那么我渴望听到你的答案。特别是如果它能帮助我学习Javascript:-)


谢谢。

看起来你把你的
  • 混在一起了。你很接近

    如果希望插件在
    上运行,请进行以下修改:

    jQuery.fn.stuffplaylist = function() {
    
        return this.children('li').each(function() {
    
            if ($(this).hasClass('non-stuff')) {
                alert("TRUE. Has non-stuff class");
                return true;
            }
            else {
                alert("FALSE. Has not got non-stuff class");
                return false;
            };
        });
    };
    
    您可以通过从选择中删除不需要的元素来进一步完善此功能

       jQuery.fn.stuffplaylist = function() {
            return this.children('li.non-stuff').each(function() {
                    //$(this).text() -> 'foo'
                    alert("TRUE. Has non-stuff class");
                    return true;
            });
        };
    

    看起来你把你的
  • 搞混了。你很接近

    如果希望插件在
    上运行,请进行以下修改:

    jQuery.fn.stuffplaylist = function() {
    
        return this.children('li').each(function() {
    
            if ($(this).hasClass('non-stuff')) {
                alert("TRUE. Has non-stuff class");
                return true;
            }
            else {
                alert("FALSE. Has not got non-stuff class");
                return false;
            };
        });
    };
    
    您可以通过从选择中删除不需要的元素来进一步完善此功能

       jQuery.fn.stuffplaylist = function() {
            return this.children('li.non-stuff').each(function() {
                    //$(this).text() -> 'foo'
                    alert("TRUE. Has non-stuff class");
                    return true;
            });
        };
    

    只需修改选择器,使其在本例中查看子对象

    return $('#list-with-stuff li').each(function() {
    
        if ($(this).hasClass('non-stuff')) {
            alert("TRUE. Has non-stuff class");
            return true;
        }
        else {
            alert("FALSE. Has not got non-stuff class");
            return false;
        };
    });
    

    只需修改选择器,使其在本例中查看子对象

    return $('#list-with-stuff li').each(function() {
    
        if ($(this).hasClass('non-stuff')) {
            alert("TRUE. Has non-stuff class");
            return true;
        }
        else {
            alert("FALSE. Has not got non-stuff class");
            return false;
        };
    });
    

    现在,您似乎正在一个数组中循环,该数组只包含一个列表。试着这样做:

    $(document).ready(function() {
        $("#list-with-stuff li").each(function(index, element){
            if ($(element).hasClass('non-stuff')) {
                alert("TRUE. Has non-stuff class");
                return true;
            } else {
                alert("FALSE. Has not got non-stuff class");
                return false;
            };
        });
    });
    

    现在,您似乎正在一个数组中循环,该数组只包含一个列表。试着这样做:

    $(document).ready(function() {
        $("#list-with-stuff li").each(function(index, element){
            if ($(element).hasClass('non-stuff')) {
                alert("TRUE. Has non-stuff class");
                return true;
            } else {
                alert("FALSE. Has not got non-stuff class");
                return false;
            };
        });
    });
    


    “如何确定选择了什么列表元素”,您所说的“选择”是什么意思?对不起。
    每个
    函数都会遍历我传递的对象中的所有元素,对吗?因此,我所说的选定对象是指循环当前使用的对象。
    $(this)
    是循环中当前使用的对象。如果您指的是文本foo或bar,请查看.innerHTML()或.innerText()“如何确定选定的列表元素”,您所说的选定对象是什么意思?对不起。
    每个
    函数都会遍历我传递的对象中的所有元素,对吗?因此,我所说的selected是指循环当前使用的对象。
    $(this)
    是循环中当前使用的对象。如果您指的是文本foo或bar,请查看.innerHTML()或.innerText(),这不是您编写插件的方式。这是事实,但据我所知,OP并没有尝试编写插件。无论如何,如果@Stefan就是这个意思,那么这段代码并不能解决问题。选择器仍然只匹配列表,而不匹配其子项。@Igor:他是。也许你应该研究一下jQuery文档中关于如何编写插件的内容。@Greg:这显然不是OP的意图,请列举一个可以这样做的插件。我已经写了很多,用过很多,几乎所有的都是根据你的选择来做的。这是以插件形式编写代码的一部分好处——与编写接受ID的小函数不同,您可以使用CSS选择器的全部功能。我不确定你是否理解这个问题域。这不是你编写插件的方式。这是真的,但就我所见,OP并没有试图编写插件。无论如何,这段代码并不能解决问题,如果@Stefan就是这个意思的话。选择器仍然只匹配列表,而不匹配其子项。@Igor:他是。也许你应该研究一下jQuery文档中关于如何编写插件的内容。@Greg:这显然不是OP的意图,请列举一个可以这样做的插件。我已经写了很多,用过很多,几乎所有的都是根据你的选择来做的。这是以插件形式编写代码的一部分好处——与编写接受ID的小函数不同,您可以使用CSS选择器的全部功能。我不太确定你是否理解这个问题域。这种优化是无用的,因为他想对所有元素采取行动,只是对非物质元素采取不同的行动。这种优化是无用的,因为他想对所有元素采取行动,只是对非物质元素采取不同的行动。