Jquery 上色的最佳方法<;a>;标签?

Jquery 上色的最佳方法<;a>;标签?,jquery,jquery-mobile,Jquery,Jquery Mobile,在jQM 1.4中,我有一个包含一组listitems的listview,每个listitems的结构如下: <li> <a> <input type="checkbox"> <label> ... </label> </a> <a></a> </li> 这确实有效,但我有兴趣知道是否有更好的方

在jQM 1.4中,我有一个包含一组listitems的listview,每个listitems的结构如下:

<li>
    <a>
        <input type="checkbox">
        <label>
           ...
        </label>
    </a>
    <a></a>
</li>
这确实有效,但我有兴趣知道是否有更好的方法,因为这似乎有点昂贵


谢谢

您的标记似乎有点笨拙。如果您能够将其更改为:

<ul>
  <li>
    <input type="checkbox">
    <a>Foo</a>
  </li>
</ul>


否则,你的js就没那么糟糕了。这不太可能对性能造成任何影响。

您正在将块元素放入锚点中?为什么?@AlexShilman:将块元素放在锚中是完全正确的。是透明的,因此在上面,在
li
中允许的任何内容都在
a
中允许。我承认在他们身上打个复选框似乎…很奇怪。这就是说,
input
label
都是短语内容,而不是流内容,所以也不是真正的“块”元素。你想要js解决方案还是css?为了简洁起见,我简化了html,但是
LI
最后是一个列表项,并且在
LI
的左侧有一个复选框,而整个列表项是一个复选框。单击复选框时,我需要更改两个
A
标记的背景色。这里有几个“带有复选框的listview”示例,但我必须适应1.4,并且只将listitem的左侧部分作为复选框,而不是全部。假设OP不必支持IE8。我认为IE8没有这个功能,只有这个功能。(也就是说,您可以使用相邻的兄弟组合符--
+
--与上面的标记一起使用。)@Omar我并不是说它无效,只是有些尴尬:)@m59:谢谢您的回复。虽然我同意代码看起来很笨拙,但就我所能开发的而言,这是实现我想要的复选框效果的唯一方法。要使用CSS,我必须获得
输入的父项。从我所读到的,我可以使用CSS4的CSS解决方案,但那将不得不等待。为了显示效果。@m59:另外,虽然您建议的重新编码在我的情况下不起作用,但在我阅读其余的评论时,我选择您的答案作为答案,因为“不太可能伤害”部分,因为我没有看到任何其他相反的评论建议有损性能。@Phuzz先生,这些都是昂贵的选择,但是,只有在大范围内使用它们时,其效果才会变得明显。例如,你不想一次做10000次。
<ul>
  <li>
    <input type="checkbox">
    <a>Foo</a>
  </li>
</ul>
input[type=checkbox]:checked ~ a {
  background: yellow;
}