سؤال

أنا عالق حقًا .. أحتاج إلى نصيحة عاجلة: هنا هو HTML الخاص بي:

<!-- Beginning of ROW !-->
<div id="row1">
 <div id="entry">
  free
  <span>some text</span>
  <p>DKK</p>
  <input type="radio" name="red<% Response.Write(counter); %>" id="radio" value="0" />
 </div>

 <div id="entry">
  week
  <span></span>
  <p>DKK</p>
  <input type="radio" name="red<% Response.Write(counter); %>" id="radio2" value="75" />
 </div>
</div>
<!-- End of ROW !-->

<!-- Beginning of ROW !-->
<div id="row2">
 .... same as in row 1
</div>
<!-- End of ROW !-->

nth row ..

هنا jQuery:

$("input").click(function() {
     $("input").parent("div").css("background", "url(images/div_bg.png)");
     $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
});

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

alt text

وهنا ما أحققه:

alt text

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

المحلول

ما هو الغرض من خطك الثاني من jQuery؟

$("input").parent("div").css("background", "url(images/div_bg.png)");

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

$(this).parent("div").siblings("div.entry").css("background", "url(images/div_bg.png)");

وبهذه الطريقة ، فقط أشقاء الإدخال الذين تقوم بتغييره سيحصلون على خلفياتهم.

في ملاحظة جانبية ، لديك العديد من divs مع نفس المعرف ، وهي ليست فكرة جيدة.

نصائح أخرى

هذا الخط: $("input").parent("div").css("background", "url(images/div_bg.png)" يتسبب في إعادة تعيين جميع العناصر الأخرى إلى طبيعتها ، مما يتيح لك الحصول على حالة نشطة واحدة فقط في وقت واحد. يمكنك نقله إلى الصف حتى يتم تحديد عنصر واحد.

تقوم فقط بتعيين السلوك للعنصر الذي تم النقر عليه ، بدلاً من جميع مربعات الإدخال المحددة. قد ترغب في جعل وظيفة على هذا النحو:

function foo()
{
   $('input :selected').css(bar);
}

الآن كلما حصلت على حدث نقرة في حدث إدخال ، اتصل بشريط الاتصال. قد تحتاج إلى تعديل FOO لتلبية مواصفاتك.

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