4

这是迄今为止我在使用 jQuery 时遇到的最烦人和最奇怪的问题。这是可笑的基本(墨菲定律错误之一)

我有一个 div(divDialog):

    <div id="divDialog">
    </div>

我调用对话框函数:

    $('#divDialog').dialog();

它在萤火虫中给了我这个错误:

    this.element[0].nodetitle is undefined

如果我删除 div,错误就会消失。如果我只排除选择器部分,它会在萤火虫中显示节点,一切看起来都很好。我目前正在通过以下方式扩展 jquery:

$.fn.isAfter = function(sel){ //returns true if element is after, else return false, for animations
    return this.prevAll(sel).length > 0;
}
$.fn.isBefore= function(sel){ //returns true if element is before, else return false, for animations
    return this.nextAll(sel).length > 0;
}
$.fn.exists = function(){ //returns true if element exists, false if not
    return this.length>0;
}
$.fn.btnClick = function(fn){ //check if the element is disabled before executing onclick
    $(this).click(function(){
        if($(this).attr('disabled')!='disabled'){
            fn(this);
        }
    });
    return $(this);
}
$.fn.btnToggle = function(){ //toggle disable/enable
    if($(this).attr('disabled')=='disabled'){
        $(this).removeAttr('disabled');
    }
    else{
        $(this).attr('disabled','disabled');
    }
    return $(this);
}

我也在扩展 Array 原型:

    Array.prototype.isArray = true; //this allows us to say if(variable.isArray) to detect arrays

有任何想法吗?我对此感到非常沮丧。任何帮助或方向将不胜感激。

4

1 回答 1

1

问题显然是 jQuery、jQuery UI 或它们配对的版本问题。我使用的是 jQuery 1.7.1 和 jQuery UI 1.8.1。使用谷歌的 AJAX 库后问题消失了。Nodetitle 仅出现在 UI 库中,所以我假设其中的某个地方很大。对于任何 jQuery 开发人员,我建议在 UI 和 vanilla 之间进行某种包控制。也许可以通过使用 AJAX 调用将 UI 移植到浏览器中,以便 UI 始终与正确的 vanilla 包匹配?总之,解决了。

于 2012-10-16T20:55:51.850 回答