我有这个jQuery文件
jQuery(document).ready(function() {
var orderId= <%= OrderLi.ClientID %>;
jQuery("#ApprovalTab").css("display", "block");
jQuery("#ApprovalLi").css("background-color", "#5EA8DE");
jQuery("#ApprovalLi a").css("color", "#FFF");
jQuery("#OrdersTab").css("display", "none");
jQuery("#ApprovalLi a").css("border-bottom", "3px #5EA8DE solid");
jQuery("#ApprovalLi").click(function() {
jQuery("#ApprovalTab").css("display", "block");
jQuery("#ApprovalLi").css("background-color", "#5EA8DE");
jQuery("#ApprovalLi a ").css("color", "#FFF");
jQuery("#orderId a").css("color", "black");
jQuery("#Arrow").css("margin-left", "15px");
jQuery("#ApprovalLi a").css("border-bottom", "3px #5EA8DE solid");
jQuery("#orderId a").css("border-bottom", "3px #D8D9DC solid");
jQuery("#orderId").css("background-color", "#F0F1F4");
jQuery("#OrdersTab").css("display", "none");
});
jQuery("orderId").click(function() {
jQuery("#ApprovalTab").css("display", "none");
jQuery("#OrdersTab").css("display", "block");
jQuery("#Arrow").css("margin-left", "112px");
jQuery("#orderId").css("background-color", "#5EA8DE");
jQuery("#orderId a").css("border-bottom", "3px #5EA8DE solid");
jQuery("#ApprovalLi a").css("border-bottom", "3px #D8D9DC solid");
jQuery("#ApprovalLi").css("background-color", "#F0F1F4");
jQuery("#orderId a").css("color", "#FFF");
jQuery("#ApprovalLi a").css("color", "black");
});
jQuery("#orderId").hover(function() {
jQuery("#orderId a").css("border-bottom", "3px #5EA8DE solid");
});
jQuery("#ApprovalLi").hover(function() {
jQuery("#ApprovalLi a").css("border-bottom", "3px #5EA8DE solid");
});
});
适用于此:
<ul class="etabs">
<li id="ApprovalLi"><a href="#stopAtTop">Approval </a></li>
<li id="OrderLi" runat="server" ><a href="#stopAtTop">Orders</a></li>
</ul>
如果我不使用runat =“server”代码工作得很好,但是当我使用它时,代码不会呈现。我在互联网上搜索了一些东西,但我发现的唯一一件事是“ID正在改变”。我已经知道了,你可以在上面的jQuery中看到我正在使用服务器ID。
顺便说一句:我知道我可以优化上面的代码,但我希望它能够先工作。还有什么问题?
谢谢。
答案 0 :(得分:2)
使用以下代码将变量orderId
设置为ClientID
var orderId= <%= OrderLi.ClientID %>;
ClientID
的值需要用引号括起来使它成为一个字符串文字,但是(最初由于Yuriy错过了这个),否则这本身就会引起问题:
var orderId= '<%= OrderLi.ClientID %>';
但是似乎根本没有利用它,而是试图使用另外两种方法访问一些orderId
的东西,这两种方法都使用jQuery选择器中的硬编码字符串文字:
jQuery("orderId")
和
jQuery("#orderId")
现在第一个是查找orderId
的元素(或者更确切地说是所有元素),第二个是标识符为"orderId"
的元素。因此,完全偶然的是,您的代码只是在没有 runat="server"
的情况下工作并且似乎在添加 runat="server"
时突破。
你想要的是实际使用你的变量:
jQuery(orderId)
更准确一点,因为你正在使用选择器中的标识符:
jQuery("#" + orderId)
使用哈希而不是每次使用(取决于总使用量)为变量值添加前缀可能更有用。