【问题标题】:jQuery select div in a rowjQuery连续选择div
【发布时间】:2010-11-26 23:48:01
【问题描述】:

我需要有关以下 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 将自身反转为其他背景,尽管输入仍处于检查状态。这是我想要实现的目标

这是我实现的目标:

【问题讨论】:

  • 您在第 1 行中有两个 id="entry" 的 div。这可能会给您带来一些问题。
  • 这是 Joel 的解决方案: 1. 将 id="entry" 更改为 class="entry" 将 jquery 修改为 $("input").click(function() { $(this).parent ("div").css("background", "url(images/div_bg_hover.png)"); $(this).parent("div").siblings("div.entry").css("background" , "url(images/div_bg.png)"); });

标签: jquery select selector row each


【解决方案1】:

你的第二行jquery的目的是什么?

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

这将重置所有“条目” div 的背景。如果我正确理解您的目标,我认为您希望:

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

这样,只有您正在更改的条目的兄弟姐妹才会重置其背景。

顺便说一句,您有多个具有相同 id 的 div,这不是一个好主意。

【讨论】:

  • 我将 id 条目更改为 class 条目,错误是,但是当我删除第二行 $(this).parent("div").css("background", "url(images/div_bg. png)"); //这个然后当我点击我所有的div变成绿色
【解决方案2】:

这一行:$("input").parent("div").css("background", "url(images/div_bg.png)" 导致所有其他项目重置为正常状态,一次只能有 1 个活动状态。您可以将其范围限定为行,以便每一行都可以选择一个项目。

【讨论】:

  • "您可以将其限定为行,以便每一行都可以选择一个项目。" - 我怎么做 ? tnx
【解决方案3】:

您只是将行为分配给单击的项目,而不是所有选定的输入框。您可能想要制作这样的功能:

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

现在,每当您在输入事件上获得点击事件时,都会调用 bar。您可能需要修改 foo 以满足您的规范。

【讨论】:

  • 这似乎部分工作,谢谢,我想我忘了提到每行只能选择 1 个收音机,因此连续一个 div 也可以改变背景 我按照你的建议稍微修改了代码 $ ("input").click(function() { $('input :selected').parent("div").css("background", "url(images/div_bg.png)"); $(this) .parent("div").css("background", "url(images/div_bg_hover.png)"); 还有什么推荐的吗?
猜你喜欢
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2011-01-24
  • 2012-01-30
  • 2014-07-23
  • 1970-01-01
相关资源
最近更新 更多