مسج انقر على عنصر مرساة القوات انتقل إلى الأعلى ؟

StackOverflow https://stackoverflow.com/questions/1061580

سؤال

مسج الارتباطات التشعبية - href قيمة ؟ النص][1]

أنا على التوالي في مشكلة باستخدام مسج الحدث انقر فوق إرفاق عنصر مرساة.[1]: مسج الارتباطات التشعبية - href قيمة ؟ "هذا" حتى السؤال يبدو أن تكرار المقبولة الجواب لا يبدو أن حل المشكلة.آسف إذا كان هذا هو سيء حتى آداب.

في بلدي .جاهزة() وظيفة لدي:

jQuery("#id_of_anchor").click(function(event) { //start function when any update link is clicked
        Function_that_does_ajax();
        });

و مرساة بلدي يبدو مثل هذا:

<a href="#" id="id_of_anchor"> link text </a> 

ولكن عندما النقر على الرابط, ajax يتم تنفيذ الدالة على النحو المطلوب ، ولكن المتصفح مخطوطات إلى أعلى الصفحة.ليست جيدة.

لقد حاولت إضافة:

event.preventDefault(); 

قبل استدعاء وظيفة التي لا اياكس, ولكن هذا لا يساعد.ما أنا في عداد المفقودين ؟

التوضيح

لقد استعملت كل مجموعة من

return false;
event.preventDefault(); 
event.stopPropagation();

قبل وبعد دعوتي إلى شبيبة وظيفة اياكس.فإنه لا يزال مخطوطات إلى الأعلى.

هل كانت مفيدة؟

المحلول

التي يجب أن تعمل, هل يمكنك توضيح ما تقصد بـ "من قبل" ؟ تفعل هذا ؟

jQuery("#id_of_anchor").click(function(event) {
    event.preventDefault();
    Function_that_does_ajax();
});

لأن هذا يجب أن العمل بمعنى أنه إذا كان لا يعمل كنت تفعل شيئا خاطئا و نريد أن نرى المزيد من التعليمات البرمجية.ومع ذلك ، من أجل اكتمال هل يمكن أيضا محاولة هذا:

jQuery("#id_of_anchor").click(function() {
    Function_that_does_ajax();
    return false;
});

تحرير

هنا هو مثال على هذا العمل.

اثنين من وصلات استخدام هذه التعليمة البرمجية:

$('#test').click(function(event) {
    event.preventDefault();
    $(this).html('and I didnt scroll to the top!');
});

$('#test2').click(function(event) {
    $(this).html('and I didnt scroll to the top!');
    return false;
});

و كما ترون فهي تعمل على ما يرام.

نصائح أخرى

يمكنك استخدام javascript:void(0);في href الملكية.

وكما قال التلال أعلاه:

<a id="id_of_anchor" href="javascript:void(0)" />

وتحافظ على العلامة مرساة تبحث الحق، ويسمح لك لتعيين انقر معالجات لها مع جافا سكريبت، ولا التمرير. نحن نستخدم فقط على نطاق واسع لهذا السبب.

هذا السؤال هو أكثر من تصحيح التمرين لأنه ذكر أن كنت تستخدم وظائف الصحيحة من مسج كائن الحدث.

في مسج معالج الحدث, يمكنك أن تفعل أي أو كل اثنين من الأشياء الأساسية:

1.منع السلوك الافتراضي من العنصر (A HREF="#" في حالتك):

jQuery("#id_of_anchor").click(function(evt) { 
  // ...
  evt.preventDefault(); // assuming your handler has "evt" as the first parameter
  return false;
}

2.وقف حال من نشر إلى معالجات الأحداث المحيطة عناصر HTML:

jQuery("#id_of_anchor").click(function(evt) { 
  // ...
  evt.stopPropagation(); // assuming your handler has "evt" as the first parameter
}

منذ كنت لا تحصل على السلوك المتوقع, يجب أن تأخذ من اياكس الاتصال مؤقتا ، استبداله مع بعض حميدة مثل كود وضع نموذج القيمة ، أو -قشعريرة- تنبيه("موافق") و إذا كنت لا تزال انتقل إلى الأعلى.

$("#id_of_anchor").click(function(event) { 
  // ...
  return false;
}

ومجرد تفقد

href="#"

في علامة أتش تي أم أل ... هذا ما تسبب في صفحة ويب ل"تقفز".

<a id="id_of_anchor"> link text </a>

وتذكر أن تضيف

cursor: pointer;

لالمغلق الخاص بك بحيث سيبدو وصلة على تمرير الماوس.

وحظا سعيدا.

ولقد كان لديها نفس المشكلة.

وأعتقد أنه يحدث عند ربط الحدث قبل إلحاق العنصر إلى DOM.

وانها ساعدتني كثيرا مع رمز أدناه. شكرا لك!

        $(document).ready(function() {
        $(".dropdown dt a").click(function(event) {
        event.preventDefault();
            $(".dropdown dd ul").toggle('slow');
        });           
        $(".dropdown dd ul li a").click(function(event) {
        event.preventDefault();
            $(".dropdown dd ul").hide();
        });
    });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top