jquery шексіз айналдыру «reset»

Веб-сайт үшін шексіз айналдыру jQuery плагинін пайдаланамын ( https://github.com/paulirish/infinite -солдану )

Бәрі жақсы, себебі менің бетім іздестірілсе ... не болды:

1) сіз бетке өтсеңіз, браузер автоматты түрде сізді тауып, айналаңыздағы элементтер тізімін (мысалы, барлар) қайтарады ... Бұл тізімді беткейлеуді болдырмау үшін шексіз шарлау қажет. Бәрі де осында жұмыс істейді ... Мен «шексіз-беттің соңы» мен плагинді «айналдырып» айналдыра алатындығынан басқа.

2) Енді .... кіріс мәтініне мекен-жайды қолмен енгізуді қаласаңыз, сіз оны еркін етесіз ... сіздің мекен-жайыңызды жазасыз және enter ... және ajax ( ешқандай бетті жаңартпаңыз ) ... Мен lat/lon іздеймін, адресті табамын, шексіз шиыршықтың навигациялық сілтемесін өзгертіңіз .... және мен өзімді азапты сезінемін, алайда « қайта қосыңыз «немесе» қайтадан қосыңыз «. Сондықтан» жаңа іздеу нәтижелерімде «жаңа» шексіз айналдыру «данасы жоқ ...

(«split» беті дұрыс өзгертіп, «json» өзгертетін «page = NUMBER» мәнін қайтарады)

Бұл консольде орын алады:

["math:", 0, 468]
jquery.infinitescroll.min.js:20["heading into ajax", 
Array[2]
    0 : "/ajax/getCoworkings/?page="
    1 : "&latitude=52.5234051&longitude=13.4113999&distance=12"
    length : 2
    __proto__ : Array[0]
]
jquery.infinitescroll.min.js:20["Using JSON via $.ajax() method"]
jquery.infinitescroll.min.js:20["Error", "end"]
jquery.infinitescroll.min.js:20["Binding", "unbind"]

«Босатудан» кейін оны қайтадан байланыстыра алмаймын, сондықтан менің келесі іздеу нәтижелеріме шексіз слайдқа ие боласыз ........

13

8 жауаптар

infinitescroll, деректерді $. data арқылы элементінің барлық деректерін сақтайды, сондықтан сол даналық деректерін жою Infinitescroll-ды толығымен қалпына келтірудің жалғыз сенімді әдісі болып табылады.

Бұл екі сызық таза шекараны бұзатын шиыршық жасайды.

$elem.infinitescroll('destroy');
$elem.data('infinitescroll', null);

// енді шексіз слайд бұрынғы данамен ешқандай қақтығыстарсыз немесе рельефсіз қалыпты түрде қайтадан іске қосылуы мүмкін.

ЕСКЕРІМ, 2012 жылдың маусым айының соңында бұрынғы жауаптардың бірде-біреуі jquery.infinitescroll (v2.0)

26
қосылды
Мен сондай-ақ v2-ді қолданамын, бұл мен үшін жұмыс істеген жалғыз шешім.
қосылды автор Nathan Hurst, көзі
Рахмет, сіз көп уақытты үнемдейсіз. Көп рақмет...
қосылды автор Rav's Patel, көзі

Шешілді.

Мен қосылдым:

if (xhr == 'destroy') {
    $.removeData(this.element[0]);
}

функциясында

_error: function infscr_error(xhr) {

228 жолында.

Мүмкін, мұны істеудің ең жақсы жолы емес, бірақ бұл мен үшін қажетті нәрсе.

Ал мен не істеп жүргенімді білесіз:

1.

$("#myelement").infinitescroll("destroy");

2.

$("#myelement").infinitescroll(WHATEVER_SETTINGS);

... «pathParse» мәндерін өзгертудің қажеті жоқ бірақ бұл селекторларды (келесі/nav)
өзгерткендіктен jQuery арқылы.

4
қосылды
Мен осы жолды түсіндіруге тура келді//$ (opts.navSelector) .hide (); дұрыс жұмыс істеу үшін, элементін жасырғанымыздан бастап, ол опцияларды дұрыс көрсете алмады, өйткені бұл маңызды емес егер сіз плагинді бір рет жасасаңыз, бірақ біздің жағдайда pixelsFromNavToBottom
қосылды автор Yehia A.Salam, көзі
ЕСКЕРТПЕ: бұл шешім 2012 жылдың маусым айынан бастап жұмыс істемейді.
қосылды автор fisch0920, көзі

Мұнда айтылмайды, бірақ (Infinite Scroll-тің менің нұсқасында бәрібір) InfiniteScroll-ды қайтадан қайтадан іске қосуға арналған екі айнымалы мәнді орнату керек. Сондай-ақ оны қайта жүктеу керек. Міне код:

$('#cardContainer').infinitescroll('destroy');//Destroy

// Undestroy
$('#myContainer').infinitescroll({                      
    state: {                                              
        isDestroyed: false,
        isDone: false                           
}
});

InitInfiniteScroll();//This is a wrapper for the standard initialization you need

// Re-initialize
$('#myContainer').infinitescroll('bind');
3
қосылды

Басқа шешімдерді қолданбастан, бұл мен үшін жұмыс істеді:

$(window).unbind('.infscr');

Reference 1/4 down the docs: http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/

3
қосылды
Рахмет, мен үшін жұмыс істеді ...
қосылды автор Vedat Taylan, көзі

Менде ұқсас нәрсе жасауға тура келді, себебі менің кодексім мақсатты URL мекенжайын тек есептегішке емес, пайдаланушы әрекеттеріне байланысты жаңартады.

Мен $ conеer ('reset') арқылы қоңырау шала аламын деп келесі әдісті енгізуді аяқтадым;

reset: function infrscr_reset() {
        this.options.state.isDone = false;
        this.options.state.isDuringAjax = false;//I needed this, others may not
        this._resetmsg();
        this._binding('bind');
    },

Мен сондай-ақ, hover хабары қалпына келтірудің жеке әдісін қолдандым, әйтпесе ол «ешқандай бет жоқ» хабарламасын беруді жалғастырады.

_resetmsg: function infscr_resetmsg() {
        var opts = this.options;
        opts.loading.msg = $('<div id="infscr-loading">Loading...<div>' + opts.loading.msgText + '</div></div>');
        this._debug('Reset loading message');
    },
2
қосылды

3) тармақша)

if (xhr == 'destroy') {
    $.removeData(this.element[0]);

}

Сондай-ақ жұмыс істемеді. Кем дегенде соңғы нұсқамен. Қасірет шағымданады 'инициализациядан бұрын тас қалау әдістерін шақыруға болмайды; 'қайта жүктеу' әдісін шақыру әрекеті

$container.css('display','none');
$container.html(htmlOutput).imagesLoaded( function(){
             $container.css('display','block');
             $container.masonry('reload');
});

// I have to do this in order to "reset" the stage
$container.infinitescroll('destroy');//Destroy

// Undestroy
$container.infinitescroll({                      
   state: {
      isDestroyed: false,
      isDone: false
   }
});

// Init.
$container.infinitescroll({
   navSelector  : '#page-nav',   //selector for the paged navigation 
   nextSelector : '#page-nav a', //selector for the NEXT link (to page 2)
   itemSelector : '.tile',    //selector for all items you'll retrieve
   loading: {
     finishedMsg: '',
     msgText: '',
     img: url + 'img/ajax-loader.gif'
   }
},
// trigger Masonry as a callback
function( newElements ) {
   //hide new items while they are loading
    var $newElems = $( newElements ).css({ opacity: 0 });
   //ensure that images load before adding to masonry layout
    $newElems.imagesLoaded(function(){
       //show elems now they're ready
        $newElems.animate({ opacity: 1 });
        $container.append($newElems).masonry('appended', $newElems, true); 
    });
 }
);

// Re-initialize
$container.infinitescroll('bind');
1
қосылды

Сіз мұны шексіз жылжыту мәлімдемесіне келесі кодты қосу арқылы орындауға болады.

errorCallback : function() {
    isc.getContainer().infinitescroll('destroy');
    $.removeData(this);
},

infinitescroll.js файлына ескертпе жасаңыз, ол сіздің реттелетін шексіз айналдыру мәлімдемесінде болуы керек.

0
қосылды

Сіз сияқты шексіз түрдегі слайд жасалды деп болжап отырсыз:

//This will initiate with default values for example purpose
$("#myelement").infinitescroll();

Ондай жағдайда, сіз жай ғана толығымен бұзып:

$("#myelement").infinitescroll("destroy");
//Reset anything else that may cause the page to blow up here
//And then create a new instance with different path variables:
//Note, obviously you'll be initializing it with custom selectors/settings etc so include those as well
$("#myelement").infinitescroll({pathParse:["/ajax/getCoworkings/?page=","&latitude=52.5234051&longitude=13.4113999&distance=12"]});

Егер сіз pathParse-ді анықтамасаңыз, сценарий оны өз бетімен жасауға тырысады. Егер сіз осылай жасасаңыз, ол сіз берген нәрсені қолданады. Оның сәтсіздікке ұшырауы, кез-келген нәрсеге қарағанда, әлдеқайда көп нәрсе, бірақ өзгермейтін жолдар Пэрсе қазіргі уақытта шексіз түрлендіруге қатаң түрде қолдау көрсетпейді.

0
қосылды
Бұл көмектесті емес, мен сол мәселені әлі де алдым, жаңа «.infinitiescroll ()» де «жой» кейін де: - |
қосылды автор ricricucit, көзі
бұл жауап менің жауапыма байланысты, бірақ дұрыс емес жерге орналастырылған ба? : Р
қосылды автор ricricucit, көзі
RemoveData() функциясымен жақсы ойлау. Менің ойымша, оның плагинді жою функциясына енгізу керек нәрсе. Оның қиындығы, өйткені сіз дананы өзіңізден тиімді түрде бұзуға тырысып жатырсыз!
қосылды автор Beaver6813, көзі