0

我想知道是否有人新如何在“this”关键字的范围内保持链接控制。使用 .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()
});
4

3 回答 3

0

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

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

$(document).find(this)代替工作,相当于$(window.document).

于 2012-11-17T17:52:47.553 回答
0

链接创建不可维护的代码。把它分成不同的行:

var $window =  $(window);

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

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

// etc.

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

于 2012-11-17T17:39:46.633 回答
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);
于 2012-11-17T17:33:50.530 回答