0

这是我的功能:

  $().ready(function() {
    console.log('DOM is ready');
    var songtoload = $(".soundcloudid").first().html();
    console.log(songtoload)
    if (songtoload == undefined) {
      console.log('Hide the widget');
      $("#sc-widget").hide();
    }
    if (songtoload !== undefined) {
      console.log('Show the widget');
      $("#sc-widget").show();
    }
  });

出于某种原因,即使我在 Chrome 控制台中收到以下响应,songtoload 也会一直显示为“未定义”:

$(".soundcloudid").first().html();
"31204641"

我是否错误地使用了 .ready?

编辑 这样做的目的是仅在播放列表部分中存在歌曲时才显示 SC 播放器小部件

4

2 回答 2

1

由于 songcloudid 对象是动态加载的...切换小部件的检查应移至动态加载这些对象的函数。:

function refreshPlaylist() {
    // ... some code to refresh it
    $.ajax({
        // your ajax call to refresh it
        success: function (data) {
            // ... load your data first and put it on the page
            var $songToLoad = $('.soundcloudid:first');
            if ($songToLoad.length == 1) {
                console.log($songToLoad.html())
                console.log('Show the widget');
                $("#sc-widget").show();
            }
            else {
                console.log('Hide the widget');
                $("#sc-widget").hide();
            }
        }
    });

}
于 2013-03-01T18:13:04.677 回答
0

$().ready将等到结果$()准备好。$()是一个空集。我相信你想要的是$(document).ready(function() {...})或者它的捷径:$(function() {...})

于 2013-03-01T19:19:35.560 回答