【问题标题】:How to empty div before append如何在追加之前清空div
【发布时间】:2013-11-29 21:38:24
【问题描述】:

我正在使用 Freebase Search Suggest 将某个关键字绑定到 getJson 请求。问题是我将 getJson 函数和相应的 .append/.prepend 函数绑定到具有搜索建议的输入字段。现在,如果要清除(.empty)包含 getJson 函数结果的 div,我最终将无法追加任何内容。

所以每次我进行搜索时,结果 div 都是空的。如果我不尝试运行空函数并进行第二次搜索,则新信息将附加在先前信息之上。

我的网站 www.karsten-tietje.dk/sw

$('#myinput').suggest({key: "<mykey>","filter": "(all type:/music/musical_group )"

        })
        .bind("fb-select", function(e, data) {

$.getJSON("http://ws.spotify.com/search/1/track.json?q="+search_val, function(data) {
  items = [];

        $.each(data["tracks"], function(key, val) {
        items.push('<li class="spot"><span typeof="MusicRecording" property="track"><p>Name: <strong><span property="name">' + val["name"] + '</span></span></strong></p> <p>Album <strong>' + val.album["name"] + '</strong></p><p> Released: <strong>' + val.album["released"] +'</strong></p><p><strong><a href="' + val["href"] +'"><i class="icon-play-sign"></i> Start Spotify</a></strong></p>');
            if ( key === 7 ) 
            {
            return false;
            }
        });

        $('#spotify-div').prepend('<h3 style="border-bottom:1px solid white;">Spotify tracks</h3>');
        $('#spotify').html(items.join('</li>'));
    });
});

这只是我的一些代码的 sn-p。我运行多个 getJson 函数。

如何在运行其他函数之前清除/清空结果 div?

【问题讨论】:

  • 为了清楚起见,您正试图清空 id="spotify" 的 div,对吧?
  • 你试过 $("#spotify").innerHTML = ""; 吗?来源:stackoverflow.com/questions/5744233/…
  • html() 将清空元素。是多余的还是清空它,如果一种方法同时使用,则追加
  • 不,我有一个具有不同分区的容器,我通过多个 getJson 请求将不同的信息附加到该容器。所以我必须在运行请求之前清空容器。
  • 可以使用empty()方法

标签: javascript jquery freebase


【解决方案1】:

您也可以通过清除html的内部html来做到这一点,id为“spotify”:

$('#spotify').empty();

【讨论】:

    【解决方案2】:

    选择元素并将HTML留空,如下所示

    jQuery('#selector').html('');

    然后在下面的相同选择器上应用append jquery 函数后

    jQuery('#selector').append("&lt;p&gt;text&lt;/p&gt;");

    【讨论】:

    • 难道我不能在绑定方法之后立即运行 ('#selector').html('') 并仍然获得附加信息吗?
    • 您可以只使用第一个.html() 调用,但不要使用'' 而是使用"&lt;p&gt;text&lt;/p&gt;"
    • 简单的答案但非常有用。为我工作
    【解决方案3】:

    很多人已经解释了清除机制,听起来您已经了解了,所以也许缺少的部分是何时去做。您可能想在 Freebase Suggest 选择回调中首先清除一些内容,然后再向 Spotify 等其他服务发起任何查询(即在第一个 $.getJSON() 之前)。

    与您的问题无关,但不要忘记 Freebase 许可证的归属要求(您的网站上目前未提供)。

    编辑:这是您添加空的代码:

    $('#myinput').suggest({key: "<mykey>","filter": "(all type:/music/musical_group )"
    
            })
    .bind("fb-select", function(e, data) {
        $('#spotify-div').empty(); // empty the div before fetching and adding new data
        $.getJSON("http://ws.spotify.com/search/1/track.json?q="+search_val, function(data) {
            items = [];
            $.each(data["tracks"], function(key, val) {
                items.push('<li class="spot"><span typeof="MusicRecording" property="track"><p>Name: <strong><span property="name">' + val["name"] + '</span></span></strong></p> <p>Album <strong>' + val.album["name"] + '</strong></p><p> Released: <strong>' + val.album["released"] +'</strong></p><p><strong><a href="' + val["href"] +'"><i class="icon-play-sign"></i> Start Spotify</a></strong></p>');
                if ( key === 7 ) 
                {
                return false;
                }
            });
    
            $('#spotify-div').prepend('<h3 style="border-bottom:1px solid white;">Spotify tracks</h3>');
            $('#spotify').html(items.join('</li>'));
        });
    });
    

    【讨论】:

    • 是的,就在现场!但我该怎么做呢?我将研究归因要求。
    【解决方案4】:

    使用 jQuery 可以有多种方法来清空元素的内容以及附加/前置内容。

    一个是.empty();Documentation

    $('#spotify-div').empty().prepend('<h3>YourHTML Here</h3>');
    


    另一个是.html( [ html ] ); (Documentation)

    $('#spotify-div').html('').prepend('<h3>YourHTML Here</h3>');
    

    如果您正在更改 html 并且不担心保留事件,您可以通过 .html( 'Your HTML' ); 函数传递您的 html

    $('#spotify-div').html('<h3>YourHTML Here</h3>');
    

    【讨论】:

    • 我的问题可能不太清楚。我很清楚 empty() 和 html() 函数。问题是我需要在从我的 getJson 调用中检索和附加数据之前清空整个容器。如果我在绑定方法之后立即运行空方法,我会得到无结果。所以我需要能够清空 div 然后运行 ​​getJson 函数。
    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2018-02-10
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多