2011-07-18 68 views
0

我有以下内容的中继器。jQuery的操纵问题

使用jQuery,我要处理的模板如下:当我选中该复选框, 带班“entryDiv”的div背景颜色应该变成黄色。在相反的情况下,它应该变成蓝色。不知何故,我没有把它完成。

<asp:Repeater ID="rep" runat="server"> 
      <ItemTemplate> 
       <div runat="server" class="entryDiv" id="entryDiv"> 
       <div runat="server" id="cbDiv" class="cbDiv"> 
        <asp:CheckBox ID="isUsedCheckBox" CssClass="cbIsUsed" runat="server" /> 
       </div> 
       </div> 
      </ItemTemplate> 
     </asp:Repeater> 

我想,下面的脚本是正确的,但如何继续。

$(document).ready(function() { 
    $('.cbIsUsed').change(function() { 

    }); 

}); 
+0

你在中继器的'ItemTemplate'中有一个固定的ID - 请注意,如果你有多个项目,这将会创建非法标记 – BrokenGlass

+0

@BrokenGlass:ASP.Net运行时会为它渲染的每个项目生成唯一的ID ,因此它会自动处理。 – Chandu

+0

@Cyber​​nate - 感谢,不知何故,我错过了'RUNAT =“服务器”'部分 – BrokenGlass

回答

0

必须有一个jQuery bug-解决方案只输入复选框,而不是净复选框调控工作。使用CheckBox,我将不得不使用control-id,这在这个环境中似乎不可能(中继器,jQuery没有获得id)。

1

试试这个:

$(document).ready(function() {  
    $('.cbIsUsed').change(function() { 
     var $entryDiv = $(this).closest(".entryDiv"); 
     if(this.checked){ 
      $entryDiv.css({backgroundColor:"Yellow"}); 
     } else{ 
      $entryDiv.css({backgroundColor:"Blue"}); 
     } 
    }); 
}); 

工作实例:http://jsfiddle.net/kxBXw/1/

+0

的东西与我的代码可能是错的,但我从来没有黄色的div,只有蓝:( – AGuyCalledGerald

+0

@Jan:我不是可能是什么问题用代码休息。我已经发布了一个活生生的例子@ http://jsfiddle.net/kxBXw/1/,它工作正常。 – Chandu

+0

对不起,先生,您的解决方案是不正确的。这必须是一个jQuery错误,请尝试重建。我的代码并执行它,它不工作 – AGuyCalledGerald

1

像这样的东西应该做的伎俩。它改变了最近的祖先元素的背景颜色与class“entryDiv”以黄色或蓝色,这取决于复选框是否被选中与否:

$(".cbIsUsed").click(function() { 
    if(this.checked) { 
     $(this).closest(".entryDiv").css("background-color", "yellow"); 
    } 
    else { 
     $(this).closest(".entryDiv").css("background-color", "blue"); 
    } 
}); 

看到一个工作示例here

+0

它只会产生蓝色:( – AGuyCalledGerald

+0

)您是否看过我在我的答案中发布的链接?它在那里可以正常工作...所以在您的代码中可能会有其他内容导致该问题。 –

1

这个怎么样?

$(document).ready(function() { 
    $('.cbIsUsed').change(function() { 
     if($(this).is(':checked')){ 
      $(this).closest('.entryDiv.').css('background', '#ffff00'); 
     } 
     else{ 
      $(this).closest('.entryDiv.').css('background', '#0000ff');    
     } 
    }); 
}); 
0
$(document).ready(function() { 
    $('.cbIsUsed').change(function() { 
     var el = $(this).parents(".cbDiv"); 
     if($(this).prop("checked")) el.css("backgroundColor", "yellow"); 
     else el.css("backgroundColor", "blue"); 
    }); 
}); 

如果复选框被选中与if($(this).prop("checked")),然后用parents法这种检查获取父DIV与类.cbDiv并改变它的背景颜色为蓝色或黄色取决于什么的检查值。

如果你想做到这一点使用CSS类,你可以使用addClassremoveClass

el.addClass("yellow").removeClass("blue"); 
+0

这是否适合您?脚本错误(虽然它似乎工作不知) – AGuyCalledGerald

+0

是啊,它没有,我没有得到任何错误?错误说的是什么? – betamax

+0

对象或财产“道具”不支持 – AGuyCalledGerald

1
$('.cbIsUsed').change(function() { 
    $(this).parents(".entryDiv").css("background", this.checked ? "yellow" : "white"); 
}); 

应该做的伎俩。

1
$(".cbIsUsed").change(function() { 
    $(this).parents(".entryDiv").css("background", $(this).is(":checked") ? "yellow" : ""); 
}); 

http://jsfiddle.net/HTNpc/