PDA

View Full Version : مشکل این کد چیه Ajax Jquery



tem988
شنبه 24 اردیبهشت 1390, 23:15 عصر
سلام
من این کد رو نوشتم
ولی وقتی روی نوشته امتیاز کلیک میکنم امتیاز که ثبت میشه بعد نوشته امتیاز + هم حذف میشه hide میشه
مشکلش کسی میدونه ؟


<script type="text/javascript">
$(function() {

$(".vote").click(function()
{

var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);

if(name=='up')
{

$.ajax({
type: "POST",
url: "Tanks.php",
data: dataString,
cache: false,

success: function(html)
{
parent.html(html);

} });

}

return false;
});

});

<a class="vote" name="up" id="10" href="" >
امتیاز +</a>

alismith
یک شنبه 25 اردیبهشت 1390, 20:26 عصر
سلام
به جای :


parent.html(html);


این طوری مقادیر رو به تگ a اضافه کنید:


parent.append(html);


موفق باشید

mehdi.mousavi
سه شنبه 27 اردیبهشت 1390, 10:55 صبح
سلام.
آیا می دونید این کدی که نوشته اید (همین 3 خط به ظاهر ساده)، چقدر Performance رو پایین میاره؟

var id = $(this).attr("id");
var name = $(this).attr("name");
var parent = $(this);

اینجا شما دارید 3 بار jQuery.init رو با selector مورد نظر (یعنی this)، فراخوانی می کنید. این فراخوانی، منجر به اجرای حداقل 2 تا شرط میشه:

if (!selector) {
return this;
}

if (selector.nodeType) {
this.context = this[0] = selector;
this.length = 1;
return this;
}


و چون (در مثال شما) selector مورد نظر یک DOM Element هستش (اینجا anchor)، پس دو if فوق با هر بار فراخوانی $(this) اجرا میشه و البته کدهای درون if دوم... که منجر به پایین اومدن Performance میشه. بنابراین، بهتره همواره یک بار در اول تابع، $(this( رو در متغیری نگهداری کنید، سپس از اون متغیر در ادامه کار استفاده کنید:

var self = $(this);
var id = self.attr("id");
var name = self.attr("name");

موفق باشید.