DataZombies — iScroll не работает с клонированными разделами

#javascript #jqtouch #iscroll4

#javascript #jqtouch #iscroll4

Вопрос:

Я клонирую как <li> шаблон, так и последующий <div> шаблон (на который <li> ссылаются ссылки) из динамически извлекаемых данных. После создания списка я могу обновить s-scrollwrapper, используя это: $ (‘#rlist’).data(‘iscroll’).refresh(); Это здорово. Однако, когда дело доходит до шаблона, мне не повезло обновить каждый из них. Я пробовал вышеупомянутый метод, метод jQT.setPageHeight(); как onClick из ссылки <li> , так и при <div> создании каждого. Я даже пытался добавить новый s-scrollwrapper в уже сформированный <divs> , ни один из которых, похоже, не работает.

     function loadInfo(){ 
... 
fillRedSection(availableArray, $('#entryTemplate')); 
$('#rlist').data('iscroll').refresh(); 
//Tried ways to refresh scroll of the cloned divs...nothing seems to 
work 
} 

function fillRedSection(arr, template){ 
  //iterating through the JSON data 
  for (i = 0; i<arr.length; i  ){ 
        var dataLocation = arr;  //Data arr 
        var row = dataLocation[i].id;  //id# coming with JSON data 
        var newEntryRow = template.clone(); //cloned <li> template 
from HTML 
        newEntryRow.removeAttr('id'); 
        newEntryRow.removeAttr('style'); //removing hidden style 
        newEntryRow.attr('id', 'red-label' row); //renaming the <li> 
id with the id from JSON 
        newEntryRow.attr('class', 'arrow'); //JQT class 
        newEntryRow.appendTo('#redlist ul'); //placing cloned <li> 
into ul 
        newEntryRow.find('a').attr('href','#red-' row);//renaming href 
so it will link to the cloned <div> 
            var newEntryDetails = $('#red-description').clone(true, 
true);//cloning the div template 
            newEntryDetails.removeAttr('id'); 
            newEntryDetails.removeAttr('style');//removing hidden 
style 
            newEntryDetails.attr('id', 'reds-' row);//renaming id so 
the <li> href can link to it 
             //1 Possible attempt at adding the scroll class as each 
div is created 
             // Hopefully avoiding problem of cloned scrolls with the 
same id name 
            /*var newScroll = $('.tester'); 
            newScroll.removeAttr('id'); 
            newScroll.attr('id', 'scroll-' row); 
            newScroll.attr('class', 's-scrollwrapper');*/ 
            newEntryDetails.appendTo('#jqt'); //append cloned <div> to 
the main <#jqt> div. 
newEntryDetails.find('h4').text(dataLocation[i].business_name);// 
filling div from JSON 
       ... 
   } 
} 

//Attempt to refresh iScroll on the div that is being clicked on from 
the <li> 
//used onClick="refreshScroll() 
refreshScroll { 
jQT.setPageHeight(); 
} 
  

Кажется, ничего не работает. Я был бы признателен за любую помощь по этому вопросу.

Ответ №1:

Спасибо за использование моего кода. Каждый идентификатор в вашей HTML-разметке должен быть уникальным, иначе ваш JavaScript не будет работать. Когда вы раскрашиваете разделы, вы также дублируете идентификатор div. Мой код динамически присваивал div с классом .s-scrollwrapper идентификатор на основе идентификатора страницы. Изменение идентификатора страницы в вашем коде должно помочь. Также включите в свой код следующее, чтобы все настроить.

 init_iScroll('<new page's div>');