2012-11-17 91 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)