альтернатива wrapInner () - PullRequest
       3

альтернатива wrapInner ()

1 голос
/ 01 декабря 2011

Я пытаюсь добавить новый div, который будет охватывать некоторый контент на моем сайте.Я могу заставить его работать с wrapInner, но в моем случае это не сработает, потому что содержимое, которое я упаковываю, содержит 2 сценария (facebook и youtube).Эти два сценария в конечном итоге запускаются дважды, и они оказываются на странице в двух разных местах.(Я думаю, это известная проблема с wrapInner.)

Страница является частью размещенного решения в среде Saas.У меня очень ограниченный доступ к коду страницы.Страница загружает jQuery v1.3.2, и у меня нет доступа к разделу head, поэтому я не могу изменить его на более новую версию.Я также не могу изменить сценарии facebook или youTube, они жестко запрограммированы и недоступны.Мой скрипт должен выполняться внутри тегов body.Я могу добавить PHP, если это поможет кому-нибудь найти решение.

Вот мой макет страницы:

<div class="content-main">
  <div class="detail">
    ...additional content...
    <facebok script>
    <youtube script>
    ...additional content...
  </div>
</div>

Вот что я хочу:

<div class="content-main">
  <div class="detail">      
    <div id="my_New_Div">         <-- New div starts here
      ...additional content...
      <facebok script>
      <youtube script>
      ...additional content...
    </div>                        <-- New div ends here 
  </div>
</div>

Этоскрипт, который я использую:

 <script type="text/javascript">
   // add an extra div for design
   $('.content-main .detail').wrapInner('<div class="detail-inside"></div>');
 </script>

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Это должно работать с Jquery 1.0

var content = $('.content').html();
$('.content').empty().html('<div class="my_New_Div">' + content + '</div>');

или как плагин:

(function($){
    $.fn.wrapInner2=function(wrapWith){
        return this.each(function(){
            var c = $(wrapWith).append($(this).html());
            $(this).empty().append(c);
        });
    }
})(jQuery);
0 голосов
/ 02 декабря 2011

Это временное решение.

Я заметил, что расположение моего скрипта jQuery на странице влияло на вывод в html.В частности, один набор экземпляров facebook и youTube будет отображаться там, где они первоначально были вызваны на странице (правильные позиции для моего дизайна), а другой (нежелательный) набор будет отображаться там, где я разместил свой скрипт jQuery.1006 * Итак, мой обходной путь - поместить мой сценарий в элемент div, который имеет стиль отображения: нет.Это работает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...