【发布时间】:2010-11-03 02:20:52
【问题描述】:
我希望这样:
<asp:CheckBox ID="CheckBox1" runat="server" CssClass="myClass" />
<asp:RadioButton ID="RadioButton1" runat="server" CssClass="myClass" />
<asp:TextBox ID="TextBox1" runat="server" CssClass="myClass" />
...像这样渲染 (为简单起见删除了一些属性):
<input id="CheckBox1" type="checkbox" class="myClass" />
<input id="RadioButton1" type="radio" class="myClass" />
<input id="TextBox1" type="text" class="myClass" />
...事实上,RadioButton 和 CheckBox 被 span 标签包裹,并且 CSS 类被应用在那里。
<span class="myClass"><input id="CheckBox1" type="checkbox" /></span>
<span class="myClass"><input id="RadioButton1" type="radio" /></span>
<input type="text" id="TextBox1" class="myClass" />
这是有原因的吗?有办法避免吗?它使 jQuery 选择器变得丑陋,因为您无法捕获所有选择器:
$("input.myClass")
当然它只是:
$("input.myClass, span.myClass input")
...但这很难看。我可以编写自己的选择器,但还是没有应有的优雅。
【问题讨论】:
-
不是答案,只是表示同情——几年前我第一次开始在 .NET 平台上工作并使用 JS 找出复选框的值时,我花了几个小时试图弄清楚为什么我的价值观没有引起警觉。你猜怎么着——跨度标签。我一直想知道为什么 MS 为他们的单选按钮和复选框添加了冗余标签!
-
@Hardwareguy 有时这是跨度,有时是输入。那就是问题所在。 $("input.myclass") 可能有点过于具体,但 $(".myClass") 会让你同样头疼。
-
如果您使用 Checkbox.Text 属性,则会添加一个标签。然后跨度将围绕它们,并且样式适用于两者。这就是周围跨度的原因。
-
可能是因为这样的事情:stackoverflow.com/questions/7398462/…
-
对于 asp:checkbox,我注意到使用 CssClass 属性时也会添加跨度。