هل من الطبيعي أن يكون لديك عنصرين مع نفس المعرف في عنصرين Div مع معرف آخر: محدث

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

سؤال

أعلم أن عنصرين لا يمكن أن يكونا نفس المعرف. لكن يحدث ذلك ، في مشروعي ، لدي عنصرين مع نفس الهوية في divs الأخرى ، مثل هذا

<div id="div1">
     <img id="loading" />
</div>
<div id="div2">
     <img id="loading" />
</div>

و CSS:

#div1 #loading
{
    some style here...
}
#div2 #loading
{
    another style here...
}

يعمل بشكل جيد بالنسبة لي ، ولكن ربما لم يتم التوصية به؟

شكرًا

تحديث

نعم ، أنا أعلم ، هذا يمكنني استخدام الفصول الدراسية ، ويوصي بشدة بذلك ، لكنني أريد أن أعرف هل هناك أي خطر محتمل في هذا الاستخدام للمعرف؟ أعتقد لا ، لأنني كتبت على سبيل المثال

$("#div1 #loading")... يصبح عنصرًا فريدًا. أليس كذلك؟

التحديث النهائي

استخدم Principe المقترح ، إذا كان لديك أسباب للقيام بذلك! ؛)

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

المحلول 10

https://www.w3

enter image description here

لكن!

إذا كنت في حاجة إليها في مشروعك ، يمكنك استخدامه ، كما هو مقترح في بلدي سؤال التحديث النهائي!

نصائح أخرى

تغيير هويتك إلى الفصل. ليس من الجيد إعطاء معرف مكرر.

فكر في اثنين من الطلاب الذين لديهم نفس لفة في الفصل. تخيلهم الحصول على نتيجة الفحص. كيف ستتمكن المدرسة من التعرف على ورقة العلامات؟

طريقك ليس متوافقًا مع المتصفح ، وسيؤثر كثيرًا أثناء ترميز JavaScript ، ونشر النموذج وما إلى ذلك

يمكنك الحصول على نفس التأثير باستخدام الفصل

نرى

<div id="div1">
     <img class="loading" />
</div>
<div id="div2">
     <img class="loading" />
</div>

و CSS:

#div1 .loading
{
    some style here...
}
#div2 .loading
{
    another style here...
}

يجب أن يكون الهوية (ينبغي) كن فريدا!!

سيكون لديك مشكلات في اختيارها عبر JS في معظم المتصفحات - فئة استخدام أفضل

السبب الكبير هو معالجة JavaScript DOM. في حالتك ، إذا فعلت شيئًا كهذا ...

document.getElementById("loading")

... ستعيد JavaScript العنصر الأول ، والعنصر الأول فقط. لن يكون لديك أي وسيلة للوصول إلى بقيةهم دون بعض المشي الجاد DOM.

فقط لأنه لم ينشرها أحد - مواصفات HTML ، قسم على الهوية, ، الذي يقول:

المعرف = الاسم [CS

تعين هذه السمة اسمًا لعنصر. يجب أن يكون هذا الاسم فريدًا في وثيقة.

نعم أنت على حق ، لا يوصي بذلك. يجب أن يكون المعرف دائمًا فريدًا (على سبيل المثال ، إذا كنت ترغب في تحديد العنصر مع JavaScript). إذا كنت ترغب فقط في إضافة نفس النمط إلى DIVS ، فما عليك سوى استخدام فئة CSS.

فريد:

في الرياضيات والمنطق ، يتم استخدام عبارة "هناك واحد واحد فقط" للإشارة إلى وجود كائن واحد مع خاصية معينة بالضبط.

#div1 #loading لا تعالج حقيقة أن لديك حالتان #loading في وثيقتك. لذلك ، لا ، لا تفعل ذلك.

يجب أن تكون المعرفات فريدة من نوعها ، لذا فإن ID1 و ID2 على ما يرام ، ولكن بالنسبة للعديد من العناصر ذات النمط نفسه ، استخدم فئة HTML ومحدد فئة CSS:

.loading
{
styles here
}

يُسمح بتكرار هذه المرات عدة مرات كما تريد في صفحة :)

هل هذا طبيعي؟ رقم.

هل هو موصى به؟ بالطبع لا! إنه محظور فعليًا (لكن الإنفاذ ضعيف).

لكنه (على ما يبدو) يعمل ، لذلك ...

يتم استخدام المعرف لتمييز العناصر ، يجب أن تكون فريدة لسبب مختلف ، أحدها هو استخدام JavaScript ، وظيفة مثل GetElementByid لن تعمل بشكل جيد إذا كان لديك معرف مكرر ، فلن تتمكن من التنبؤ بما ستفعله افعل على متصفح مختلف حيث يتم تنفيذ JS ذاتيًا على كل متصفح بشكل مختلف.

إذا كنت ترغب في استخدام بنية مثل #DIV Loading و #Div2 ، فيبدو من الواضح أن كلا التحميل لهما استخدامات مماثلة بحيث يجب أن تكون فئات وسيتم استخدامها مثل هذا

#div1.loading و #div2.loading

أيضًا واحد زائد لاستخدام هذا بناء الجملة هو وضع النمط المشترك في. تحميل مثل هذا

. تحميل {نمط مشترك لكل من التحميل}

#div1.loading {style المستخدمة فقط عن طريق التحميل في div1}

#div2.loading {style المستخدمة فقط عن طريق التحميل في div2}

التحقق من الصحة والبلاغ جانبا ، إنه وظيفي تمامًا. لكنني بالتأكيد سأكون منزعجًا إذا استخدمت معرف #Loading ووجدت أن تأثير jQuery أو تأثير CSS ينطبق على أكثر من عنصر واحد. أخبرني إذا كان IE6 أو 7 أو Firefox 1.x أو 2.x يدمر هذا الرمز.

إنها ممارسة سيئة لاستخدام I على العنصر. لأنني سأعطي شيئًا لفهم فريدة من نوعها مع تحديد اسمها. والشيء الثاني نستخدمه في CSS ولكن في JavaScript هذه الممارسة السيئة. مثال جيد جدا لهذا الفصل والطالب.

لذلك لا تفعل هذا.

لا أتفق مع الأشخاص الذين يقولون دائمًا استخدام "فريد" ، مما يعني معرف مختلف في كل مرة تقوم فيها بتسمية واحدة. في بعض الأحيان يكون مقبولًا ، مثل حالتي التي أقوم فيها بصنع آلة حاسبة.

يقوم JavaScript بعمل الرياضيات وإخراج النتيجة في DIV مع المعرف = "المجموع". أحتاج إلى نفس "المجموع" بالضبط في مكانين مختلفين. في هذه الحالة ، لماذا لا أستخدم اثنين من Div مختلفان مع نفس الهوية؟ أحتاج نفس الرقم في كلا المربعين. مع jQuery ، أقوم بأداء الرياضيات وأخرجها مرة واحدة ، وهي تملأ كل من Div في نفس الوقت ، وهو ما أريده.

طالما أنك تفهم المخاطر التي إذا كنت تقوم بسحب المعلومات من هذين Div مع نفس الهوية ، فأنا أقول لا تتردد. طالما أنك لا تخلط بين نفسك وتحتاج إلى نتائج مختلفة في نفس معرف DIV.

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