a_gust_wind 2021-08-26 06:48 采纳率: 55.6%
浏览 46
已结题

jquery1.0里执行 $('#aa').mouseover(fun) this指向的改变


这是源码11531169行的 原型上的mouseover方法
```javascript

new function(){

    var e = ("blur,focus,load,resize,scroll,unload,click,dblclick," +
        "mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," + 
        "submit,keydown,keypress,keyup,error").split(",");

    // Go through all the event names, but make sure that
    // it is enclosed properly
    for ( var i = 0; i < e.length; i++ ) new function(){
            
        var o = e[i];
        
        // Handle event binding
        jQuery.fn[o] = function(f){
            console.log(this,"1167原型上的this");  //这里的this还是jQuery对象{0div#aa,length1}
            return f ? this.bind(o, f) : this.trigger(o);//当进入bind方法时 this指向发生了改变
        };


这是1051到1056行 jQuery原型上的bind方法

    bind: function( type, fn ) {
            console.log("1052bind",this)   //这里的this变成了<div id="aa"></div>成了dom元素
            if ( fn.constructor == String )
                fn = new Function("e", ( !fn.indexOf(".") ? "$(this)" : "return " ) + fn);
            jQuery.event.add( this, type, fn );
        },

bind方法时this.bind来调佣的调佣前this是jQuery对象,为什么调佣后变成了dom对象

  • 写回答

1条回答 默认 最新

  • a_gust_wind 2021-08-26 07:35
    关注

    源码中310到315行 \

    
    jQuery.each( jQuery.macros.each, function(i,n){
                jQuery.fn[ i ] = function() {
                    console.log(this,i,"11111213")
                    return this.each( n, arguments );
                };
            });
    

    this是在这里发生的改变 这里的i就是bind名 n对应的就是function(){} bind方法体也就是在进入bind方法体之前它已经遍历了一次this 提取dom元素

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 创建了问题 8月26日

悬赏问题

  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的