在js中删除一个表单的所有tr的一个class属性,再为某一个tr加上这个class属性怎么不行?

小xu 发布于 2013/04/17 11:17
阅读 7K+
收藏 0
在js中调用$("table tr").removeClass("search")删除一个表单的所有tr的一个class属性,再调用addClass("search")为某一个tr加上这个class属性怎么不行?
加载中
0
iSea
iSea
贴出代码看看一看哦,这样子谁知道你干了什么
Barb1eQ
Barb1eQ
+1
0
小xu
小xu

$("#dataTable3 tbody tr").find("input.radio").click(function(){
      $("#dataTable3 tbody tr").removeClass("ui-state-highlight");
      $(this).parent().parent().addClass("ui-state-highlight");
           });

当我点击表单里的radio时让这一行加上ui-state-highlight,使这一行背景色变灰,而点击另外一行的radio时要去掉刚才那一行的效果,也就是点击radio实现单行选择!谢谢~

0
JustForFly
JustForFly

$("#dataTable3 tbody tr").find("input.radio").click(function(){

改为:

$("#dataTable3 tbody tr").find(":radio").click(function(){

0
小xu
小xu
不是,我的意思是点了第一行的radio后第一行加上了背景颜色,再点击第二行的radio时第一行的颜色是去掉了,而第二行没加上颜色,即没加上class:ui-state-highlight,是不是因为$("#dataTable3 tbody tr").removeClass("ui-state-highlight");的原因导致下面 的$(this).parent().parent().addClass("ui-state-highlight");不起作用!
0
Barb1eQ
Barb1eQ
console.log($(this).parent().parent());看你取到的是什么.
0
小xu
小xu
$(this)取的是radio所在的input,$(this).parent()取的是radio所在的td,$(this).parent().parent()取的是radio所在的tr,我如果把$("#dataTable3 tbody tr").removeClass("ui-state-highlight");去掉的话$(this).parent().parent().addClass("ui-state-highlight");是起作用的,可以加上背景,就是再点第二行的radio时第一行的这个class还在,所以就出现了两行背景颜色改变的现象。
小xu
小xu
当然取到了!谢谢哈~~
Barb1eQ
Barb1eQ
我的意思是叫你确认下确实取到了那行tr了嘛 真汗- -!
0
fei_zheng
fei_zheng

这样看看是不是第一行影响的。。。延迟调用下。。

$("#dataTable3 tbody tr").find("input.radio").click(function(){

      $("#dataTable3 tbody tr").removeClass("ui-state-highlight");

      setTimeout(function(){$(this).parent().parent().addClass("ui-state-highlight");},200);
});

小xu
小xu
恩 跟延迟差不多,就是去掉了ui-state-highlight之后好像多了个ui-state-hover的class,使得它一直处于焦点状态
0
小xu
小xu
……必须取到了啊,要不能给它加上背景!我已经解决了:当之前选中的一行被去掉ui-state-highlight这个class的时候他还会保留一个ui-state-hover的class,只有鼠标在上面移动下,失去焦点的时候被去掉ui-state-highlight这个class的这一行才会完全去掉背景,所以应该执行$("#dataTable3 tbody tr").removeClass("ui-state-highlight ui-state-hover");然后再执行addClass("ui-state-highlight");
返回顶部
顶部