سؤال

انا املك div يتم إرجاعها من مكالمة AJAX التي تحتوي على a. وبعد أحتاج إلى النقر فوقه في JavaScript، ومع ذلك، لا يمكنني العثور على طريقة تعمل في كل من IE6 و FF.

هذا يعمل في FF ولكن يولد الكائن مطلوب خطأ في IE6:

$('#mylink').click();

هذا يعمل في IE6 ولكن يولد $ ("# mylink"). احصل عليه (0). انقر فوق وظيفة خطأ في FF.

$('#mylink').get(0).click();

أي أفكار حول سبب هذا وأي نوع من الحل المتاح؟

تعديل:

يؤدي استخدام الزناد إلى إرجاع الخطأ نفسه النقر في IE6:

$('#mylink').trigger('click');

تعديل:

لا يغير وضع التعليمات البرمجية في مؤقت السلوك:

 setTimeout(function() {
  $('#mylink').click();
 }, 100);

تعديل:

كمحلول، هذه الوظائف. ولكن سيكون من الجيد فهم القضية بشكل أفضل. هذه ليست مشكلة مسج وحدها (أو ربما على الإطلاق). يأتي خطأ JavaScript IE6 من MicrosoftAJAX.JS بحيث يكون له علاقة بهذا.

 var anchor = $('#mylink');
 if (anchor.get(0).click) {
  anchor.get(0).click();
 }
 else {
  anchor.click();
 }
هل كانت مفيدة؟

المحلول

إذا $ ("# mylink"). انقر () غير موجود ولكن $ $ ("# mylink"). احصل على (0). انقر فوق، ثم هل يمكنك استخدام هذا كأساس لاختبار؟

على سبيل المثال

if ($("#mylink").click)
{
    $("#mylink").click()
}
elseif ($("#mylink").get(0))
{
    $("#mylink").get(0).click();
}

بعيدا عن المثالي، أعرف ولكن هذه هي طريقة الأشياء عند التعامل مع IE6

نصائح أخرى

تتم إرجاع طريقة Get عنصر DOM. أنت تستخدم shoudl eq بدلا من ذلك.

$('#mylink').eq(0).click();

ماذا عن استخدام اثار ?

$("#mylink").trigger('click');

يحاول:

$('#mylink').trigger('click');

ينبغي كن هو نفسه مثالك الأول، على الرغم من ... قم ببعض التنبيهات في IE للتأكد من وجود العنصر وكل ذلك (ربما لديك معرف مكررة في مكان ما أو أي شيء؟).

ال الكائن مطلوب من المحتمل أن يتم إنشاؤها لأن أي لا يمكن العثور على #mylink محدد في الوقت المناسب. تأكد من إجراء المكالمة في وظيفة رد الاتصال الناجح أو توفير وظيفة مهلة الشيكات إذا كان العنصر متاحا قبل تشغيل النقر:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top