为什么jquery的行为如此

and*_*rei 3 jquery

$('.box').click(function(){
    $(this).find('p').toggle(
        function () {
            $(this).css({"color" : "red"});
        },
        function () {
            $(this).css({"color" : "black"});
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

如果我执行这个脚本,如果我点击'p'而不是.box类,为什么?'p'颜色会改变?以及当我点击.box div时,如何使它'p'颜色发生变化

Nic*_*ver 7

.toggle()为事件分配事件处理程序click,你想要的是:

$('.box').toggle(function(){
    $('p', this).css({"color" : "red"});
},  function () {
    $('p', this).css({"color" : "black"});
});
Run Code Online (Sandbox Code Playgroud)

每次你包装一个新函数时,都会this引用你正在处理的元素(至少,对于这个例子,请看更多关于闭包在这里如何工作),所以首先它是.box选择器匹配,然后它是每个p内部,你想要分配上点击切换.box,切换p的色彩,让您使用.toggle().box直接.