سؤال

أحاول الحصول على محتويات عنصر مستند XML، لكن العنصر يحتوي على نقطتين في اسمه.

يعمل هذا السطر مع كل العناصر باستثناء العناصر التي تحتوي على نقطتين في الاسم:

$(this).find("geo:lat").text();

أفترض أن القولون يحتاج إلى الهروب.كيف يمكنني حل هذه المشكلة؟

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

المحلول

استخدم شرطة مائلة عكسية، والتي يجب الهروب منها حتى لا تأكلها JavaScript:

$(this).find("geo\\:lat").text();

نصائح أخرى

هذا ليس مجرد اسم عنصر عادي.هذا اسم مؤهل، مما يعني أنه اسم يشير تحديدًا إلى نوع عنصر داخل مساحة الاسم.اسم نوع العنصر هو "lat"، وبادئة مساحة الاسم هي "geo".

في الوقت الحالي، لا يستطيع jQuery التعامل مع مساحات الأسماء بشكل جيد، كما ترى الخطأ 155 للتفاصيل.

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

$(this).find("lat").text();

إذا كان عليك التمييز بين أنواع العناصر التي لها نفس الاسم المحلي، فيمكنك استخدامها filter():

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();

يحرر: خطأي، كان لدي انطباع بأن التصحيح قد هبط بالفعل.استخدم اقتراح آدم للمحدد، و filter() إذا كنت بحاجة إلى مساحة الاسم أيضًا:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();

اذا كان لديك مشكلة محدد jquery مع chrome أو webkit عدم اختياره حاول

$(this).find('[nodeName=geo:lat]').text();

بهذه الطريقة يعمل في جميع المتصفحات

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