如何将 class 应用于转发器中的另一个 div 悬停在转发器中的 div
How to apply class to a div in a repeater on hover of another div in the repeater
我有一个包含以下内容的中继器:
<div id="undercover" class="Price">
<span class="Location">UNDERCOVER</span><br />
<asp:label runat="server" ID="lblUndercover" Text="Price" CssClass="PriceLabel" /></div>
...中继器中的一些其他内容,然后
<div id="containerUndercover">
<div class="BookButton">
<asp:LinkButton ID="btnBookUndercover" runat="server" CommandName="Undercover">BOOK</asp:LinkButton>
</div></div>
当悬停 "containerUndercover" div 时,我需要向 "undercover" div 应用额外的 class。
当 div 不在中继器中时,这相对简单,具有以下 jQuery:
<script type="text/javascript">
$(function () {
$('#containerUndercover').hover(function () {
$('#undercover').addClass('PriceHover');
}, function () {
$('#undercover').removeClass('PriceHover');
});
});
但是,当然,我无法将其应用于 每个 "undercover" 和 "containerUndercover" div,因为它们是重复的.我知道问题出在哪里,但我找不到解决方法。
我尝试将 runat="server"
添加到 div,然后尝试使用(例如)<%= containerUndercover.ClientID %> 获取他们的 ID,但这只会抛出一个错误并说 "containerUndercover doesn't exist".
有办法实现吗?
您可以使用其他方式 select 您悬停的元素,id 不是唯一的选择。例如css class
<div id="undercover" class="Price">
<span class="Location">UNDERCOVER</span><br />
<asp:label runat="server" ID="lblUndercover" Text="Price" CssClass="PriceLabel" /></div>
<!-- ... some other stuff in the repeater, and then -->
<div id="containerUndercover" class="container-undercover">
<div class="BookButton">
<asp:LinkButton ID="btnBookUndercover" runat="server" CommandName="Undercover">BOOK</asp:LinkButton>
</div></div>
<script type="text/javascript">
$(function () {
$('.container-undercover').hover(function (e) {
$(e.target).parent('.Price').addClass('PriceHover');
}, function (e) {
$(e.target).parent('.Price').removeClass('PriceHover');
});
});
对页面上的定位控件稍作修改,但我有一些工作。这意味着悬停功能应用于整个 'ButtonLeft' div 而不仅仅是按钮区域,但我认为我的客户会同意的。
<div id="buttonLeft" class="ButtonLeft">
<asp:Panel runat="server" ID="pnlOutdoorPrice">
<div id="outdoor" class="Price outdoor">
<span class="Location">OUTDOOR</span><br />
<asp:label runat="server" ID="lblOutdoor" Text="Price" CssClass="PriceLabel" />
</div>
<div id="containerOutdoor">
<asp:Panel runat="server" ID="pnlOutdoorBookButton" Visible='<%# customFunctions.CheckinDateWithinSpecified(Convert.ToInt32(Eval("ProviderID")), this.txtCheckIn.Text) && customFunctions.CheckoutDateWithinSpecified(Convert.ToInt32(Eval("ProviderID")), this.txtCheckOut.Text) %>'>
<div class="BookButton">
<asp:LinkButton ID="btnBookOutdoor" runat="server" CommandName="Outdoor">BOOK</asp:LinkButton>
</div>
</asp:Panel>
</div>
</asp:Panel></div>
$(function () {
$('.ButtonLeft').hover(function () {
$(this).find('.outdoor').addClass('PriceHover');
}, function () {
$(this).find('.outdoor').removeClass('PriceHover');
});
});
我有一个包含以下内容的中继器:
<div id="undercover" class="Price">
<span class="Location">UNDERCOVER</span><br />
<asp:label runat="server" ID="lblUndercover" Text="Price" CssClass="PriceLabel" /></div>
...中继器中的一些其他内容,然后
<div id="containerUndercover">
<div class="BookButton">
<asp:LinkButton ID="btnBookUndercover" runat="server" CommandName="Undercover">BOOK</asp:LinkButton>
</div></div>
当悬停 "containerUndercover" div 时,我需要向 "undercover" div 应用额外的 class。
当 div 不在中继器中时,这相对简单,具有以下 jQuery:
<script type="text/javascript">
$(function () {
$('#containerUndercover').hover(function () {
$('#undercover').addClass('PriceHover');
}, function () {
$('#undercover').removeClass('PriceHover');
});
});
但是,当然,我无法将其应用于 每个 "undercover" 和 "containerUndercover" div,因为它们是重复的.我知道问题出在哪里,但我找不到解决方法。
我尝试将 runat="server"
添加到 div,然后尝试使用(例如)<%= containerUndercover.ClientID %> 获取他们的 ID,但这只会抛出一个错误并说 "containerUndercover doesn't exist".
有办法实现吗?
您可以使用其他方式 select 您悬停的元素,id 不是唯一的选择。例如css class
<div id="undercover" class="Price">
<span class="Location">UNDERCOVER</span><br />
<asp:label runat="server" ID="lblUndercover" Text="Price" CssClass="PriceLabel" /></div>
<!-- ... some other stuff in the repeater, and then -->
<div id="containerUndercover" class="container-undercover">
<div class="BookButton">
<asp:LinkButton ID="btnBookUndercover" runat="server" CommandName="Undercover">BOOK</asp:LinkButton>
</div></div>
<script type="text/javascript">
$(function () {
$('.container-undercover').hover(function (e) {
$(e.target).parent('.Price').addClass('PriceHover');
}, function (e) {
$(e.target).parent('.Price').removeClass('PriceHover');
});
});
对页面上的定位控件稍作修改,但我有一些工作。这意味着悬停功能应用于整个 'ButtonLeft' div 而不仅仅是按钮区域,但我认为我的客户会同意的。
<div id="buttonLeft" class="ButtonLeft">
<asp:Panel runat="server" ID="pnlOutdoorPrice">
<div id="outdoor" class="Price outdoor">
<span class="Location">OUTDOOR</span><br />
<asp:label runat="server" ID="lblOutdoor" Text="Price" CssClass="PriceLabel" />
</div>
<div id="containerOutdoor">
<asp:Panel runat="server" ID="pnlOutdoorBookButton" Visible='<%# customFunctions.CheckinDateWithinSpecified(Convert.ToInt32(Eval("ProviderID")), this.txtCheckIn.Text) && customFunctions.CheckoutDateWithinSpecified(Convert.ToInt32(Eval("ProviderID")), this.txtCheckOut.Text) %>'>
<div class="BookButton">
<asp:LinkButton ID="btnBookOutdoor" runat="server" CommandName="Outdoor">BOOK</asp:LinkButton>
</div>
</asp:Panel>
</div>
</asp:Panel></div>
$(function () {
$('.ButtonLeft').hover(function () {
$(this).find('.outdoor').addClass('PriceHover');
}, function () {
$(this).find('.outdoor').removeClass('PriceHover');
});
});