2013-03-01 2 views
0

Вот моя функция:Jquery не работает должным образом .ready элементов в частичной

$().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(); 
    } 
    }); 

По какой-то причине, songtoload продолжает идти вверх, как «неопределенные», даже когда я получаю следующий ответ в консоли Chrome:

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

Я неправильно использую .ready?

EDIT Целью этого является только показать SC игрок виджет, если песня присутствует в списке воспроизведения частичного

+0

как о том, что остальные из нас использует: '$ (функция() {...' – adeneo

+0

вы можете показать HTML в 'soundcloudid' – SRy

+0

I? не знаю, но мне любопытно, почему вы используете == и затем! == вместо! = .. или === и! == –

ответ

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(); 
      } 
     } 
    }); 

} 
+0

Это полезно, поэтому мне не нужно иметь дело с неопределенным, но у него такая же проблема, когда он всегда скрывает виджет, даже если есть элемент, возвращаемый символом $ ('. Soundcloudid: first'); – bsiddiqui

+0

Он скрывается, даже если возвращается элемент? Таким образом, ваш журнал показывает как «Показать виджет», так и «Скрыть виджет»? Если это так, это означает, что он вызывается несколько раз или есть другой скрипт где-то, который скрывает виджет после выполнения этого скрипта. – Zach

+0

Консоль показывает только «Скрыть виджет», но если я скопирую функцию и вставлю ее в консоль, она отобразит виджет. Кроме того, если я введу только $ ('. Soundcloudid: first'); в консоли он возвращает [ 31204641 ] – bsiddiqui

0

$().ready будет ждать, пока результат $() не готов. $() - пустой набор. То, что я верю, что вы хотите, будет либо $(document).ready(function() {...}) или его ярлык: $(function() {...})

Смежные вопросы