2012-10-10 64 views
4

我不是jQuery的專家,我試圖將C#中的某些變量值傳遞給我在keyup和onclick事件上調用的函數。到目前爲止,我有這樣的事情:將變量值後面的代碼傳遞給jQuery函數

$('mydiv').bind('keyup click', function(event) {} 

,但我需要的應該是:

$('mydiv').bind('keyup click', function(event, UserId, ControlId) {} 

,其中userid和控件ID有一些IDS我的代碼從查詢字符串中已經落後。我也使用jQuery 1.6.4。

我該如何做到這一點,最好不使用隱藏的輸入字段? 謝謝。

+0

什麼是用戶ID和控件ID應該代表什麼?你試圖傳遞給jQuery的是哪種數據?你能舉一個樣本數據的例子嗎? – kdrvn

回答

0

我會使用數據屬性:

$('mydiv').data({ userId: <%= UserId %>, ControllId: <%= ControllId %> }) 

那麼你就可以訪問這些數據在上單擊事件:

$('mydiv').on('click', function(event) { 
    var userId = $(this).data('userId'); 
    var ControlId = $(this).data('ControlId'); 
}); 
+0

使用屬性圖而不是多次調用數據方法。爲什麼他應該把它作爲數據屬性保存在第一位呢?無論如何,他可以從任何地方直接訪問他們。 – Johan

+0

@Johan你是對的。我錯過了Christa23的問題。他遇到的問題是如何訪問從C#傳遞給JavaScript的變量。我認爲數據屬性比在JavaScript中使用全局變量更清晰。 – bekite

+0

是的,我同意全局變量部分。但是,我試圖說的是,這些價值觀並不需要保存在可變參數中。他們已經可以在任何地方使用'<%= UserId %>'進行訪問。關於你的代碼片段,imo,將它改爲'$('mydiv')。data({userId:<%= UserId %>,ControllId:<%= ControllId%>}) – Johan

0

使用on而不是bind

由於jQuery 1.7,.on()方法是將事件處理程序附加到文檔的首選方法。

從服務器將值傳遞給客戶端,與剃刀(如果你使用的asp.net MVC):

$('mydiv').on('keyup click', function(event, @UserId, @ControlId) {} 

,或者如果它的web表單:

$('mydiv') 
    .on('keyup click', function(event, <%= UserId %>, <%= ControllId %>) {} 
-1

的Javascript作用域是不喜歡其他語言的示波器 所以如果你寫

var UserId = 5; 
var ControlId = 5; 

$('mydiv').bind('keyup click', function(event) 
{ 
    alert(UserId); 
}); 

它會工作

退房http://jsfiddle.net/FgYTL/1/

-2

是我mydiv類,ID或jQuery的變量?看起來你需要做

$('div.mydiv') or $('div#mydiv') 
0

變量聲明爲公衆在後面的代碼

public string userId="abc"; 

訪問它在客戶端

var uid='<%=userId %>'; 
$('mydiv').bind('keyup click', function(event, uid, ControlId) {} 
+0

作爲一個方面說明,'public'是有效的,但我會使用'protected'accesor,只要範圍似乎只是網頁,這也是有效的。 – bradbury9