jQuery: كيفية تمرير البيانات الوصفية للحدث على عناصر HTML مع الحفاظ على صحة XHTML؟

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

  •  01-10-2019
  •  | 
  •  

سؤال

أنا متأكد من أن الكثير منكم قد صادف هذه المعضلة في وقت واحد أو آخر:

لدي عنصر HTML على مستوى الكتلة يحتوي على عناصر متعددة على مستوى الكتلة وعلى مستوى الخط ، على سبيل المثال

<div id="ajax">
   <h2>Something</h2>
   <div class="icon"></div>
   <div class="clear"></div>
   <div class="somethingelse"><h3>blah</h3></div>
</div>

أرغب ببساطة في إرفاق حدث jQuery Ajax () بنقرة على #ajax (العنصر الأعلى مستوى) ، لكنني بحاجة إلى المرور عبر بعض المعلمات إلى البرنامج النصي من جانب الخادم.

إحدى الطرق الممكنة التي أراها هي ببساطة استبدال div#ajax مع a#ajax, ، مما يسمح لي بإضافة شيء مثل href="param=value&this=that", ، لكن هذا من شأنه أن يجعل الصفحة غير صالحة: لا يمكن أن يكون هناك أي عناصر على مستوى الكتلة (<div>) داخل عنصر مضمّن (<a>).

طريقة أخرى ممكنة هي إضافة أ rel يعزو إلى div#ajax, ، مما يعني أيضًا إهمال التحقق من صحة XHTML.

لا أريد أن أضيف مضمراً onclick الأحداث إلى divs ، هذا بعيد قليلا ... أيضا ، تحول جميع الأطفال من div#ajax إلى على سبيل المثال <span> سيكون بيتا كبرى.

كيف يمكنك التعامل مع هذا؟

شكرًا!

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

المحلول

هناك عدة طرق للقيام بذلك مع الحفاظ على صحة XHTML ، أو على الأقل وظيفية كاملة في جميع المتصفحات:

الخيار الأول ، ضع المعلمات مباشرة في JavaScript في مكان ما ، وهذا هو أبسط.


ثانياً ، إذا لم تتمكن من القيام بذلك في البرنامج النصي ، يمكنك استخدام المرساة ، ولكن داخل, ، لا لفها ، مثل هذا:

<div id="ajax">
   <h2>Something</h2>
   <div class="icon"></div>
   <div class="clear"></div>
   <div class="somethingelse"><h3>blah</h3></div>
   <a class="params" href="page.htm?param=value&this=that"></a>
</div>

CSS يخفيها:

.params { display: none; }

و jQuery باستخدامه:

$("#ajax").click(function() {
   $.ajax({
     url: $(this).find(".params").attr("href");
     success: function() {
       //do something
     }
   });
});

ثالثا ، الاستخدام سمات بيانات HTML5, ، سيؤدي ذلك إلى كسر صلاحية XHTML الصارمة ، ولكن طريقة مستقبلية رائعة للذهاب ، لن تسبب أي مشاكل في المتصفحات الحالية.


الخيار الأخير (الذي يمكنني التفكير فيه) ، استخدم jquery metadata البرنامج المساعد أو تخزين ما تريد.

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