2016-09-19 2 views
0

Ich habe einen Filter in meiner Website mit AJAX.Filtering funktioniert, wenn ich den AJAX mit Klick-Ereignis auf ein Intervall fein aufgerufen. Aber wenn ich mehrfach auf den Absenden-Button gleichzeitig geklickt bekomme ich das wiederholte Ergebnis über meine Seite. Ich gebe hier nicht ganze Details.Ajax-Filter funktioniert nicht richtig

Ich bin das Ergebnis in meiner Seite auf der Basis der div count anhängen. Das ist das Problem, denke ich.

if ($("#holiday-list-loaded-view-start").nextAll("div").first().hasClass('hotel-list-view')) { 
    $(".hotel-list-view").last().after('<div class="hotel-list-view"><div class="wrapper"><div class="col-md-4 col-sm-6 switch-img clear-padding"><a href="'+base_url+'package_detail/view_detail/'+value["id"]+'"><img src="'+img+'"alt="cruise"></a></div><div class="col-md-6 col-sm-6 hotel-info"><div><div class="hotel-header"><h5>'+value["package_name"].substr(0,120)+'<!--<span><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star-o colored"></i></span>--></h5><p class="small"><i class="fa fa-map-marker"></i>'+shortest_itinerary+'&nbsp<span id="packagepopup'+value['id']+'" class="package_modal_details" ><i class="fa fa-info-circle" title="View Details" ></i></span><!--<i class="fa fa-phone"></i>123456789--></p></div><div class="hotel-header"><p>Inclusions</p></div><div class="hotel-desc"><p>'+inclusions+'</p></div><!--<div class="hotel-header"><p>Themes</p></div><div class="hotel-desc"><p>'+themes+'</p></div>--></div></div><div class="clearfix visible-sm-block"></div><div class="col-md-2 rating-price-box text-center clear-padding"><div class="rating-box"><div class=""><strong>Themes</strong></div><div class="small">'+themes+'</div></div><div class="room-book-box"><div class="price"><h5>Rs '+value["package_price"]+'/Person</h5></div><div class="book"><a href="#" class="send_package_query" id="packagequery'+value["id"]+'" title="Send a Query">QUERY</a><a href="'+base_url+'package_detail/view_detail/'+value["id"]+'" title="View Detail">DETAIL</a></div></div></div></div></div>'); 
} else { 
    $("#holiday-list-loaded-view-start").after('<div class="hotel-list-view"><div class="wrapper"><div class="col-md-4 col-sm-6 switch-img clear-padding"><a href="'+base_url+'package_detail/view_detail/'+value["id"]+'"><img src="'+img+'"alt="cruise"></a></div><div class="col-md-6 col-sm-6 hotel-info"><div><div class="hotel-header"><h5>'+value["package_name"].substr(0,120)+'<!--<span><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star colored"></i><i class="fa fa-star-o colored"></i></span>--></h5><p class="small"><i class="fa fa-map-marker"></i>'+shortest_itinerary+'<span id="packagepopup'+value['id']+'" class="package_modal_details" ><i class="fa fa-info-circle" title="View Details" ></i></span><!--<i class="fa fa-phone"></i>123456789--></p></div><div class="hotel-header"><p>Inclusions</p></div><div class="hotel-desc"><p>'+inclusions+'</p></div><!--<div class="hotel-header"><p>Themes</p></div><div class="hotel-desc"><p>'+themes+'</p></div>--></div></div><div class="clearfix visible-sm-block"></div><div class="col-md-2 rating-price-box text-center clear-padding"><div class="rating-box"><div class=""><strong>Themes</strong></div><div class="small">'+themes+'</div></div><div class="room-book-box"><div class="price"><h5>Rs '+value["package_price"]+'/Person</h5></div><div class="book"> <a href="#" class="send_package_query" id="packagequery'+value["id"]+'" title="Send a Query">QUERY</a><a href="'+base_url+'package_detail/view_detail/'+value["id"]+'" title="View Detail">DETAIL</a></div></div></div></div></div>'); 
} 

Oh ja, ich habe es, wenn die Seite gerendert wird Es dauert während Zeit bedeuten, wenn ein andere Filterung Ereignis auftritt dann Ihr Ergebnis auch auf den gleichen Block aufgrund des unsachgemäßen Spiel von div Elemente angehängt wird dafür Ergebnis wird wiederholt .

Aber wie man es löst. Ich weiß es nicht.

+0

Was ist '.ajax_calls'? – guest271314

+0

Dies ist eine Funktion, die die Details der Eingabeform und der Paginierungsseite übernimmt und die Ergebnisse darstellt. Ich habe Update meine Frage – dpkrai96

+0

Ich habe zwei div # holiday-list-loaded-view-start und # holiday-list-loaded-view-end b/w sie ich rendere meine Ergebnisse – dpkrai96

Antwort

0

dann Verwendung von empty() Funktion machen vorheriges Ergebnis zu löschen (der mögliche Ort ist kurz vor Schleife beginnt),

//this will erase previous result 
$(".hotel-list-view").empty(); 
// or 
$("#holiday-list-loaded-view-start").empty(); 
// then append function may be before/after/append 
+0

lassen Sie mich wissen, ob die Antwort hilfreich für Sie ist oder nicht –

+0

Ja Ihre Antwort ist hilfreich, aber ich verwende dieses $ ("# holiday-grid-loaded-view-start") .nextUntil ('# holiday-grid-loaded-view -end '). remove(); für das richtige Ergebnis. – dpkrai96

+0

Wenn hilfreich, bitte upvote es, Sie lösen es richtig –