代码之家  ›  专栏  ›  技术社区  ›  Diana G

向类中的每个元素添加一个元素,获取[对象对象]或纯文本,而不是hr元素

  •  3
  • Diana G  · 技术社区  · 8 年前

    在对 <div> 对应于 .pressRow 班这是我的JavaScript函数:

    function SortPressRecent() {
        var $pressRows = $(".pressRow");
        var OrderedDivs = $pressRows.sort(function (a, b) {
            var da = new Date($(a).data("date"));
            var db = new Date($(b).data("date"));
            return da > db ? -1 : da < db;
        });
        $.each(OrderedDivs, function () {
            $(this)[0].append($('<hr />'));
        });
        $("#PressRows").html(OrderedDivs);
    }
    

    这就是 PressRow 看:

    <div id="PressRows">
        <div class="row pressRow" data-date="1/13/2010 8:36:00 PM" data-name="AStringHere">
            <div class="col-sm-3">
                <img src="anImgHere" />
            </div>
            <div class="col-sm-9">
                <a class="links" href="someLink">AStringHere</a>
            </div>
        </div>
        ... More pressRows here ...
    </div>
    

    如果我附加 $('<hr />') ,它显示为 [Object object] . 如果我将其添加为 'hr' ,它显示为文本,而不是我想要的行。

    编辑:你们的答案都是正确的。我意识到我有一个不同的问题,我需要在每次结束后添加它 </div> 每个的元素 pressRow 不在里面。我最终没有使用 $.each 功能:

        function SortPressRecent() {
            var $pressRows = $(".pressRow");
            var OrderedDivs = $pressRows.sort(function (a, b) {
                var da = new Date($(a).data("date"));
                var db = new Date($(b).data("date"));
                return da > db ? -1 : da < db;
            });
    
            $("#PressRows").html(OrderedDivs);
            $(".pressRow").after('<hr/>');
        }
    
    2 回复  |  直到 8 年前
        1
  •  4
  •   Tree Nguyen Praveen Innocent    8 年前

    你把vanilla JS和jQuery搞混了。

    您的代码是:

    $(this)[0].append($('<hr />'));
    

    应该是

    $(this).append($('<hr />'));
    
        2
  •  1
  •   Racil Hilan    8 年前

    这个 append() 方法是jQuery方法,需要jQuery对象,如 $(this) . 尝试使用访问第一个项目时 $(this)[0] ,则返回一个JavaScript对象,而不是jQuery对象,因此它没有 附加() 方法

    还可以将HTML字符串传递给 附加() 方法,所以您可以简单地传递它 '<hr />' 无需将其设置为jQuery对象 $('<hr />') .

    更改此行:

    $(this)[0].append($('<hr />'));
    

    收件人:

    $(this).append('<hr />');
    

    注意:某些浏览器添加了对 附加() 方法,但并非所有浏览器都支持该方法,因此不建议使用该方法。如果您想尝试,那么必须向其传递一个JavaScript节点,而不是jQuery对象。将上面的行更改为:

    $(this)[0].append($('<hr />')[0]);