一个删除行中额外元素的函数

时间:2013-12-16 07:46:45

标签: javascript jquery

如何修改此方法

$.fn.removeExtraBR= function() {
    var $this = $(this),
        $children = $this.children(),
        $el;

    if ($children.size() > 0) {
        $children.each(function(i, el) {
            $el = $(el);
            if($el.is('br') && $el.next().is('br')) {
                $el.remove();
            }
            if ($el.children().size() > 0) {
                $el.removeExtraBR();
            }
        });
    }
};

以便它接受2个参数:要检查的元素的名称,以及行中的最大数量。

示例:

HTML:

<div id='test'>
  <p></p>
  <p></p>
  <p></p>
  <p></p>
  <p></p>
  <br>
  <div>
    <p></p>
    <p></p>
    <p></p>
  </div>
</div>

js:

$('#test').maxElements('p', 2);

结果html:

<div id='test'>
  <p></p>
  <p></p>
  <br>
  <div>
    <p></p>
    <p></p>
  </div>
</div>

3 个答案:

答案 0 :(得分:0)

试试这个

$.fn.removeExtraBR= function(element, size) {
    var parentDiv = $(this);
        /*children = $this.children(),
        el;*/


        $(this).children(element).each(function(i, el) {
            if (parentDiv.children(element).size() > size) {
                $(this).remove();
            }
        });
    if($(this).children('div').size()>0)
        $(this).children('div').removeExtraBR('p', 2);

};

$('#test').removeExtraBR('p', 2);

在这里演示http://jsfiddle.net/NRAg4/

答案 1 :(得分:0)

像这样:

$.fn.maxElements = function(selector, limit) {
    if ($(this).children(selector).size() > limit) {
        $(this).children(selector).each(function(i, el) {
            if(i >= limit) {
                $(el).remove();
            }
        });
    }
};

演示:http://jsfiddle.net/42UdQ/

答案 2 :(得分:0)

以下是:

$.fn.removeExtraNodes = function (nodeType, maxCount) {
    var $this = $(this),
        $children = $this.children(),
        $el;

    var counter = 0;
    if ($children.size() > 0) {
        $children.each(function (i, el) {
            $el = $(el);
            if ($el.children().size() > 0) {
                $el.removeExtraNodes(nodeType, maxCount);
            }
            if ($el.is(nodeType)) {
                if (counter >= maxCount) {
                    $el.remove();
                } else {
                    counter++;
                }
            } else {
                counter = 0;
            }
        });
    }
};

fiddle