2010-10-23 3 views
0

Я начинающий в jQuery, и я пытаюсь вставить кнопку, подобную Facebook, через функцию jQuery document.ready.Вставка HTML с jQuery document.ready

Мой внешний Javascript файл (загружается после скрипта JQuery) имеет следующий код:

$(document).ready(function(){ 

if ($('#fb_btn').length) { 
    var fb_code = ""; 

    fb_code += "<iframe src=\"http://www.facebook.com/plugins/like.php?href=" + escape(document.URL) +"&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:80px;\" allowTransparency=\"true\" >"; 

    $('#fb_btn').prepend(fb_code); 
} 

}); 

Мой HTML код где я хочу, кнопка

<span id="fb_btn"></span> 

В настоящее время ничего не кажется, чтобы загрузить в span.

Я пытаюсь использовать это вместо того, чтобы вставлять код напрямую, потому что вставка непосредственно замедляет страницу слишком сильно.

Спасибо.

+3

Я не знаю, действительно ли это вызовет проблему, но технически «'. Обновление: И что говорит @Pointy - такие вещи, как это, ведут себя странно, особенно в FF. Попробуйте сделать 'fb_btn' a' div' –

+0

Внешние JS-файлы не обязательно должны содержать или содержать оболочку '$ (document) .ready();'. Я не уверен, что это проблема, но это, вероятно, усложняющий фактор. –

ответ

1

Брайан, ошибки, которые вы получаете на своей странице, по-видимому, связаны с отсутствием переменной $. Вы уверены, что используете $(document).ready() только после вы загружаете скрипты jQuery? Помните ... Javascript запускается сверху вниз, поэтому, если вы загрузите скрипт jQuery после запуска чего-либо в переменных $ или jQuery, вы получите неопределенные объекты.

Затем, чтобы повторить то, что говорили другие, вы должны закрыть эту строку html с помощью </iframe> и поместить iframe в элемент уровня блока.

1

Я думаю, что я только что исправил проблему, обновив jQuery на своем сайте. Это была версия 1.4.2. Используя версию 1.4.3, все работает нормально.

Либо это, либо что-то изменилось неправильно с jQuery, который у меня был.

Спасибо за вашу помощь.

+2

Кажется странным, что это было бы источником проблемы. – mpen

+2

В качестве примечания для любого, кто может просматривать это в будущем, проблема была фактически в режиме jQuery No Conflict. В WordPress работает jQuery в режиме «Без конфликтов», поэтому мои теги $ не работают. Обновление jQuery в основном отключило редактирование No Conflict, что привело к его работе. Мне просто пришлось обернуть код следующим образом: $ (document) .ready (function() { – Brian

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