2012-10-24 119 views
0

我有這樣的jQuery的文件標籤不產生工作服務ID

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 =「服務器」代碼工作得很好,但是當我使用它時,代碼不會呈現。我在互聯網上搜索了一些東西,但我發現的唯一情況是「ID正在改變」。我已經知道了,你可以在上面的jQuery中看到我正在使用服務器ID。

btw:我知道我可以優化上面的代碼,但我希望它首先工作。

還有什麼問題?

謝謝。

+0

這只是一個猜測,但您的服務器端語言可能會將ID應用於您的元素,並且您只能擁有一個ID,因此jQuery試圖訪問的一個ID不再存在 – Andy

回答

2

您的變量orderIdClientID使用設置:

var orderId= <%= OrderLi.ClientID %>; 

ClientID值需要用引號括起來,使之成爲字符串常量,但(最初錯過了,這要歸功於尤里)否則這本身會導致問題:

var orderId= '<%= OrderLi.ClientID %>'; 

但隨後似乎並沒有使用,在所有的,而是嘗試訪問使用其他兩種方法,這兩者在使用硬編碼字符串字面一些orderId事Ť他jQuery選擇:

jQuery("orderId") 

jQuery("#orderId") 

現在第一正在尋找的元件(或相當的所有元素)orderId和第二用於與"orderId"的標識符的元素。因此,這是完全偶然的,你的代碼只是工作沒有runat="server"和似乎打破加入runat="server"

你想要的是實際使用您的變量:

jQuery(orderId) 

而且更準確,因爲你與標識符選擇工作:

jQuery("#" + orderId) 

這可能是更有用的前綴變量值與散列,而不是每個用法(取決於總用法)。

+1

要絕對精確, <%= OrderLi.ClientID%>'帶引號。 IAW將被視爲變量; –

+0

@YuriyRozhovetskiy很好的地方,在那一個完全輕鬆。 –

+0

非常感謝!我可以說這是一個很好的錯誤,我可以從你的解釋中學到一些東西。 –