2012-11-17 52 views
0

我想知道是否有人新的如何保持与“这个”关键词范围内的链接控制。它使用.find下破坏掉了链子(这个)。单击没有人知道如何从打破jquery控制链这个失去范围

(function($) { 
    $.fn.mycontrol = function() { 
     $(window).resize(function() { 
      alert('resize') 
     }).scroll(function() { 
      alert('scroll')  
     }).find(document).bind('init', function() { 
      alert('scroll') 
     }).ready(function() { 
      $(this).trigger('init'); 
     }).find(this).click(function() { 
      alert('click'); // $(this) loses scope here 
     }); 
})(jQuery); 


$(document).ready(function() { 
    $('#mycontrol').mycontrol() 
}); 
+0

你的代码中有一个语法错误,你没有关闭'mycontrol函数'。 – undefined

回答

0

保持链如果我理解你正在寻找正确的内容,你应该能够只保存的this值你开始你的链接之前:

(function($) { 
    $.fn.mycontrol = function() { 
     var that = this; 
     $(window).resize(function() { 
      alert('resize') 
     }).scroll(function() { 
      alert('scroll')  
     }).find(document).bind('init', function() { 
      alert('scroll') 
     }).ready(function() { 
      $(that).trigger('init'); 
     }).find(that).click(function() { 
      alert('click'); // $(this) loses scope here 
     }); 
})(jQuery); 
+0

我想到了这一点,并试过它,但点击似乎并没有触发 – ONYX

+0

http://jsfiddle.net/33sBJ/ – ONYX

+0

@KDM-那么这就是你如何使用JavaScript中的'this'值。如果它不起作用,那么你可能有一个或多个选择器有问题。 –

0

链接创建不可维护的代码。打破它分成几行:

var $window = $(window); 

$window.resize(function() 
{ 
    alert('resize') 
}); 

$window.scroll(function() 
{ 
    alert('scroll')  
}); 

// etc. 

然后你可以读它,你可以尽管它步骤与调试器,你可以删除,并打破了任何删除逻辑。

0

window是一个对象窗口。 这是包含HTML对象的window.document。因此$(window).find(this)也返回jquery空对象作为$(window).find(document)。

$(document).find(this)改为相当于$(window.document)