2011-07-18 69 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/