jquery控制链接失去范围

时间:2012-11-17 17:31:04

标签: javascript jquery

我想知道是否有人新的如何在“这个”关键词的范围内保持链接控制。当使用.find(this).click时,它会突破链条。任何人都知道如何防止链条破坏

(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()
});

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

Chaining创建了不可维护的代码。将其分解为单独的行:

var $window =  $(window);

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

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

// etc.

然后你可以阅读它,你可以使用调试器逐步执行它,你可以删除和删除逻辑而不会破坏任何东西。

答案 2 :(得分:0)

window是一个对象窗口。 这是包含HTML对象的window.document。

所以$(window).find(this)将jquery空对象作为$(window).find(document)返回。

$(document).find(this)的作用相当于$(window.document)