9

在一个函数中,我需要在尝试删除 html 并添加新内容之前检查 (div, span, p) 中是否包含任何 .html 元素。

不知道该怎么做...

我试过这个,但不工作:

// HERE below I tried to do a check to see if the div's have HTML, but did not work
    if ($('.'+rowName+' div').html) {
        $('.'+rowName+' div').html.remove();
        $('.'+rowName+' span').html.remove();
        $('.'+rowName+' p').html.remove();
    }

全功能

// Create the Role / Fan rows
function rowMaker (rowName, roleName) {
    //alert(rowName+' '+roleName);

    // HERE below I tried to do a check to see if the div's have HTML, but did not work
    if ($('.'+rowName+' div').html) {
        $('.'+rowName+' div').html.remove();
        $('.'+rowName+' span').html.remove();
        $('.'+rowName+' p').html.remove();
    }

    // Blue button
    $('.'+rowName+' div').append(roleName);
    $('.'+rowName+' div').attr('id', 'blue-fan-'+roleName); 
    var blueButton = ('blue-fan-'+roleName);
    console.log('blueButton = '+blueButton);

    // Genres
    $('.'+rowName+' span').append(roleType);

    // Tags
    $.each(role_Actor, function(index, item) {
        $('.'+rowName+' p').append(item+', ');
    });

    $('#'+blueButton).click(function () {

        console.log('clicked blue button');

        // clears the role_Actor to be used to recapture checkboxes
        role_Actor = [];

        console.log('role_Actor = '+role_Actor);

        //$('#modal-'+roleId).modal();
        $('#modal-'+roleId).modal({persist:true});
        return false;
    });

}
4

6 回答 6

12

html是一个方法而不是一个属性,你需要使用(),然后你可以使用lengthString 对象的属性来检查返回的 html 字符串的长度:

if ( $.trim( $('.'+rowName+' div').html() ).length ) {
    // $('.'+rowName).find('div, p, span').remove();
    $('.'+rowName).find('div, p, span').empty();
}

请注意,如果要更改元素的 HTML 内容,则无需删除该元素的当前 html 内容。html方法覆盖当前的 html 内容。

于 2013-04-05T02:29:14.760 回答
6

检查孩子的长度。

if($('.'+rowName+' div').children().length > 0)
于 2013-04-05T02:29:16.577 回答
2

您可以.html()为此使用(并考虑空格):

var $row = $('.rowName');

if (!$row.find('div').html().trim().length) {
    $row.find('div, span, p').empty();
}
于 2013-04-05T02:30:30.510 回答
1

尝试

if ($('.'+rowName+' div').html().length > 0) {
        $('.'+rowName+' div').empty();
        $('.'+rowName+' span').empty();
        $('.'+rowName+' p').empty();
}
于 2013-04-05T02:30:00.693 回答
0

普通的 Vanilla JavaScript 也应该可以解决问题。

if(document.querySelectorAll('.'+rowName+' div')[0].childElementCount > 0){
  console.log("found");
}
于 2015-12-22T09:14:18.400 回答
0

像这样做:

var elementExists = $('.'+rowName+' div').html();
if (elementExists) { ... }
于 2020-01-18T17:10:03.827 回答