jQuery UI - 这相当于什么



我正在阅读我正在扩展的jquery-ui小部件的源代码,我完全被这行代码难住了。

this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement

如果我理解正确,这意味着上述内容只能等同于两件事:

this.placeholder["next"]()[0] !== itemElement
this.placeholder["prev"]()[0] !== itemElement

它想做什么?它如何执行数组键?

这是定义this.placeholder的地方:

_createPlaceholder: function(that) {
    that = that || this;
    var className,
        o = that.options;
    if(!o.placeholder || o.placeholder.constructor === String) {
        className = o.placeholder;
        o.placeholder = {
            element: function() {
                var nodeName = that.currentItem[0].nodeName.toLowerCase(),
                    element = $( "<" + nodeName + ">", that.document[0] )
                        .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
                        .removeClass("ui-sortable-helper");
                if ( nodeName === "tr" ) {
                    that.currentItem.children().each(function() {
                        $( "<td>&#160;</td>", that.document[0] )
                            .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
                            .appendTo( element );
                    });
                } else if ( nodeName === "img" ) {
                    element.attr( "src", that.currentItem.attr( "src" ) );
                }
                if ( !className ) {
                    element.css( "visibility", "hidden" );
                }
                return element;
            },
            update: function(container, p) {
                // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
                // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
                if(className && !o.forcePlaceholderSize) {
                    return;
                }
                //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
                if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
                if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
            }
        };
    }
    //Create the placeholder
    that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
    //Append it after the actual current item
    that.currentItem.after(that.placeholder);
    //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
    o.placeholder.update(that, that.placeholder);
}

如果有人能对此有所了解,我将不胜感激。

它正在获取上一个或下一个 DOM 元素。由于 jQuery 返回一个类似数组的对象,因此[0]是存储的第一个 DOM 项。

this.placeholder.prev() 

this.placeholder["prev"]()

后者称为括号表示法。

相关内容

  • 没有找到相关文章

最新更新