Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 仅针对子元素,即使事件处理程序也针对父元素 颜色 红色 苹果 草莓 橙色 $('section')。单击(函数(){ $(this.css('color','yellow'); });_Javascript_Jquery - Fatal编程技术网

Javascript 仅针对子元素,即使事件处理程序也针对父元素 颜色 红色 苹果 草莓 橙色 $('section')。单击(函数(){ $(this.css('color','yellow'); });

Javascript 仅针对子元素,即使事件处理程序也针对父元素 颜色 红色 苹果 草莓 橙色 $('section')。单击(函数(){ $(this.css('color','yellow'); });,javascript,jquery,Javascript,Jquery,我希望部分在单击时变为黄色。然而,由于$('section')也可以引用它们的父元素,因此它也将CSS应用于它们 我如何告诉jQuery仅将CSS应用于单击的子元素而不是父元素? 我不想使用$('section'),因为如果专门单击父元素,我还希望它们变成黄色。因此,我需要一个JavaScript/jQuery解决方案,而不是选择器或HTML解决方案。使用以下方法: <section id="first"> <h1>Colors</h1> &l

我希望
部分
在单击时变为黄色。然而,由于
$('section')
也可以引用它们的父元素,因此它也将CSS应用于它们

我如何告诉jQuery仅将CSS应用于单击的子元素而不是父元素?

我不想使用
$('section')
,因为如果专门单击父元素,我还希望它们变成黄色。因此,我需要一个JavaScript/jQuery解决方案,而不是选择器或HTML解决方案。

使用以下方法:

<section id="first">
    <h1>Colors</h1>
    <section id="red">
        <h1>Red</h1>
        <section id="apples">
            <h1>Apples</h1>
        </section>
        <section id="apples">
            <h1>Strawberries</h1>
        </section>
    </section>
    <section id="orange">
        <h1>Orange</h1>
    </section>
</section>

$('section').click(function(){
    $(this).css('color','yellow');
});
示例:

使用以下选项:

<section id="first">
    <h1>Colors</h1>
    <section id="red">
        <h1>Red</h1>
        <section id="apples">
            <h1>Apples</h1>
        </section>
        <section id="apples">
            <h1>Strawberries</h1>
        </section>
    </section>
    <section id="orange">
        <h1>Orange</h1>
    </section>
</section>

$('section').click(function(){
    $(this).css('color','yellow');
});
示例:

尝试以下方法:

e.stopPropagation();
试试这个:

e.stopPropagation();

正确的方法是将“this”改为“e.target”

$('section').click(function(e){
    e.stopImmediatePropagation();
    $(this).css('color','yellow');
});

更多的关于为什么这样做的信息。
正确的方法是将“this”改为“e.target”

$('section').click(function(e){
    e.stopImmediatePropagation();
    $(this).css('color','yellow');
});

更多的关于为什么这样做的信息。

使用h1而不是Section看起来你的问题是因为所谓的事件冒泡。使用h1而不是Section看起来你的问题是因为所谓的事件冒泡。
e.stopPropagation()
也有效。@user3650808-KingKing是对的,最好使用
e.stopPropagation
,否则,被单击元素本身上的任何其他处理程序也可能被阻止()
e.stopPropagation()
也可以工作。@user3650808-KingKing是对的,最好使用
e.stopPropagation
,否则被单击元素本身上的任何其他处理程序也可能被阻止()