سؤال

...على الاقل لي. هذا الرمز تستخدم للعمل بشكل جيد. أنا متأكد من أن أي شيء لم يتغير ، لكن الآن فجأة يتصرف بشكل غريب. في الأساس أحاول إنشاء وظائف تحرير مضمّنة. عندما ينقر المستخدم على الرابط ، يقوم بإنشاء مربع نص ورابط تأكيد وإلغاء تأكيد وإلغاء. أواجه مشاكل في رابط إلغاء عدم إزالة كل شيء في الخلية.

لغة البرمجة:

...
<td class="bid">
   <a href="javascript:" class="102093" title="Click to modify bid">$0.45</a>
</td>
...

ملزمة jQuery (في $(function())):

$('.bid a').live('click', renderBidChange);
....
$('.report_table .cancel').live('click', cancelUpdate); 

renderBidChange (هذه الوظيفة تخلق العناصر الديناميكية):

function renderBidChange(){
    var cpc = $(this);
    var value = cpc.text().replace('$', '');
    var cell = cpc.parent('.bid');
    cpc.hide();

    var input = document.createElement('input');
    $(input).attr({type:'text',class:'dynamic cpc-input'}).val(value);
    cell.append(input);

    var accept = document.createElement('a');
    $(accept).addClass('accept').attr({'href':'javascript:',
      'title':'Accept Changes'}).text('Accept Changes');
    cell.append(accept);

    var cancel = document.createElement('a');
    $(cancel).addClass('cancel').attr({'href':'javascript:',
      'title':'Cancel Changes'}).text('Cancel Changes');
    cell.append(cancel);

    $(input).focus();
    input.select();
}

cancelUpdate هذه الوظيفة تزيل كل شيء مرئيًا (كل القمامة الديناميكية في هذه الحالة) في الخلية وتظهر ما كان هناك.

function cancelUpdate(){
    var cell = $(this).parent();
    cell.find(':visible').remove();
    cell.find(':hidden').show();
}

ومع ذلك ، لسبب ما ، يبقى رابط الإلغاء بعد النقر عليه! تتم إزالة كل شيء آخر باستثناء ذلك. ماهذا الهراء

شكرا على أي نظرة ثاقبة يمكنك تقديمها! أنا متأكد من أنها مجرد بعض التفاصيل الصغيرة الغبية التي انتهيت منها [caffeinated] بحثًا ...

تحديث مباشرة بعد نشر هذا ، قمت بالانتشار إلى أنه قد يكون مشكلة CSS ، ولكن بعد التحقق المزدوج الكود الخاص بي ، ليس كذلك.

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

المحلول

تحتاج إلى قرص بسيط هنا:

$('.bid a:not(.cancel)').live('click', renderBidChange);

منذ أن انتقلت إلى .live(), ، يتم تشغيل الوظيفة الأولى أيضًا بنقرة على الإلغاء :)

نصائح أخرى

ماذا يحدث إذا تغيرت:

$('.report_table .cancel').live('click', cancelUpdate); 

إلى

$('.bid .cancel').live('click', cancelUpdate); 

لا أتوقع حلاً ، لكنني فقط

ما هي وظيفة "Live" لـ .Accept؟ هل يعمل (من المفترض أن يكون كذلك)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top