Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当($(#addData).is(:“可见”)时禁用表列排序_Javascript_Jquery - Fatal编程技术网

Javascript 当($(#addData).is(:“可见”)时禁用表列排序

Javascript 当($(#addData).is(:“可见”)时禁用表列排序,javascript,jquery,Javascript,Jquery,每当#addData可见时,我想禁用表列排序 但是,当我将if($(“#addData”).is(“:hidden”)应用于.each()函数时,它不起作用 有办法吗 以下是表格排序代码: $('th:contains(Remote), th:contains(Interval),th:contains(Last), th:contains(Active)') .each(function(){ var th = $(this), thIndex

每当#addData可见时,我想禁用表列排序 但是,当我将
if($(“#addData”).is(“:hidden”)
应用于
.each()
函数时,它不起作用

有办法吗

以下是表格排序代码:

$('th:contains(Remote), th:contains(Interval),th:contains(Last), th:contains(Active)')
    .each(function(){

        var th = $(this),
            thIndex = th.index(),
            inverse = false;  

        th.click(function(){

            table.find('td').filter(function(){

                return $(this).index() === thIndex;

            }).sortElements(function(a, b){

                return $.text([a]) > $.text([b]) ?
                    inverse ? -1 : 1
                    : inverse ? 1 : -1;

            }, function(){

                // parentNode is the element we want to move
                return this.parentNode; 

            });

            inverse = !inverse;

        }); 

    });


jQuery.fn.sortElements = (function(){

    var sort = [].sort;

    return function(comparator, getSortable) {

        getSortable = getSortable || function(){return this;};

        var placements = this.map(function(){

            var sortElement = getSortable.call(this),
                parentNode = sortElement.parentNode,

                // Since the element itself will change position, we have
                // to have some way of storing its original position in
                // the DOM. The easiest way is to have a 'flag' node:
                nextSibling = parentNode.insertBefore(
                    document.createTextNode(''),
                    sortElement.nextSibling
                );

            return function() {

                if (parentNode === this) {
                    throw new Error(
                        "You can't sort elements if any one is a descendant of another."
                    );
                }

                // Insert before flag:
                parentNode.insertBefore(this, nextSibling);
                // Remove flag:
                parentNode.removeChild(nextSibling);

            };

        });

        return sort.call(this, comparator).each(function(i){
            placements[i].call(getSortable.call(this));
        });

    };

})(); 

将可见性检查添加到第次调用的click事件中。如果将#addData存储在each中的一个变量中,则可以提高性能

$('th:contains(Remote), th:contains(Interval),th:contains(Last), th:contains(Active)')
    .each(function(){

        var th = $(this),
            thIndex = th.index(),
            inverse = false;  
        //BOOSTIE: var addData = $('#addData');
        th.click(function(){
            //BOOSTIE: if(addData.is(':hidden'))
            if($("#addData").is(":hidden")) //Check to see if its visible
            {   
              table.find('td').filter(function(){

                  return $(this).index() === thIndex;

              }).sortElements(function(a, b){

                  return $.text([a]) > $.text([b]) ?
                      inverse ? -1 : 1
                      : inverse ? 1 : -1;

              }, function(){

                  // parentNode is the element we want to move
                  return this.parentNode; 

              });

              inverse = !inverse;
            }
        }); 

    });

加西亚人!我明天上班的时候,第一件事就是试试这个。谢谢,很好用!再次感谢!