سؤال

حسنًا، ها هو النحيل..

لقد قمت بإعداد وظيفة jQuery التي ستنظر أولاً إلى الصفحة وتبحث عن علامات <cite>.ثم ينظر إلى النص الموجود بداخله ويبحث عن واصلة.إذا وجدت واحدة، فسيتم استخدام كل شيء قبل الواصلة كنص داخل العلامة.حيث أنه يتم استخدام كل شيء بعد الواصلة في حدث onlick الذي يفتح نافذة جديدة لعنوان URL هذا.

وهنا ما يبدو:

 // Custom function for <cite> tags making them clickable
 $('cite:contains("-")').each(function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  $(this).text(split[1]);
  $(this).click(function(){
   window.open( split[2] );
   return false;
  });
 });

وإليك كيفية استخدامه:

<blockquote>
This is quoted text from some article somewhere on the web... 
<cite>Source of Quote - http://quotedsitesource.com</cite>
</blockquote>

الآن، لقد جعلتها تعمل بشكل مثالي على صفحة ثابتة...انظر هنا: http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

ومع ذلك، عندما أحاول تنفيذه كبرنامج نصي تم تحميله في قالب WordPress، فإنه يفشل فشلاً ذريعًا!انظر هنا: http://blatantwasteofspace.com/at-random/quotes-time أنا لا أفهم ذلك...أعني أنني أقوم بتحميل نفس الإصدار بالضبط من jQuery.في البداية اعتقدت أن السبب قد يكون لأنني كنت أستخدم wp_enqueue_script('jquery') لتحميل jQuery لأنه يقوم بتحميل إصدار noconflict...لذلك، قمت بإزالة ذلك وقمت للتو بتحميل نفس الإصدار الذي أقوم بتحميله في الصفحة الثابتة، ولكن لا يوجد نرد حتى الآن.

أيه أفكار؟

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

المحلول

يقوم WordPress تلقائيًا بتحويل ASCII الخاص بك - شرطات في الشرطات (كما هو موضح في الصفحة باسم &#8211;).لن يتطابق هذا الحرف مع شرطة ASCII في التعبير العادي.

(قل لا للطباعة التلقائية "الذكية" المضللة، أيها الأطفال!إن الشرطة ليست حتى العلامة الصحيحة لأنها تشير عادةً إلى نطاقات رقمية مثل 1-10.ستكون شرطة em--’ أكثر ملاءمة هنا.)

هل هناك أي سبب وجيه لعدم كون الاستشهادات روابط فعلية؟كما أنه سيجعل المعالجة أسهل.على سبيل المثال.

<cite><a href="http://blah">Blah</a></cite>

$('cite a').click(function(e) {
    var pop= window.open(this.href);
    return pop && !pop.closed;
});

نصائح أخرى

ويمكن أن يكون ذلك السيناريو الخاص بك يتم تحميل قبل المحتويات. إذا حاولت شيئا من هذا القبيل بدلا من ذلك:

$(document).ready(function(){
 $('cite:contains("-")').live('click', function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  window.open( split[2] );
  return false;
 });
});

ومع ذلك، لا تزال تظهر الارتباط الموجود في النص وليس إزالته (وانها لن تفعل تحليل بمجرد النقر فوق علامة، وليس من قبل)، ولكن على الأقل يجب أن تعمل.

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