将变量值后面的代码传递给jQuery函数

时间:2012-10-10 10:47:25

标签: c# javascript jquery asp.net

我不是jQuery的专家,我试图将一些变量值从C#传递给我在keyup和onclick事件上调用的函数。到目前为止,我有这样的事情:

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

但我需要的是:

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

,其中UserId和ControlId是我在查询字符串后面的代码中获得的一些ID。我也在使用jQuery 1.6.4。

我该怎么做,最好不使用隐藏的输入字段? 谢谢。

6 个答案:

答案 0 :(得分:0)

我会使用数据属性:

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

然后您可以在点击事件中访问这些数据:

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

答案 1 :(得分:0)

使用on代替bind

  

从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。

使用razor将值从服务器传递到客户端(如果您使用的是asp.net mvc):

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

或者如果它的网络形式:

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

答案 2 :(得分:0)

在后面的代码中将变量声明为public

public string userId="abc"; 

在客户端访问它

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

答案 3 :(得分:0)

js文件无法直接访问C#对象,因此您需要执行以下操作。 即使您想在视图文件中编写完整的jQuery代码,仍然可以采用相同的方法。

因此,您可以在传递给View的某些Model中传递变量,一旦在Model中拥有这些变量,就可以执行以下操作:

 <script type="text/javascript">
    var myList= @Html.Raw(Json.Encode(@Model.UsersList));      
</script>

因此,现在您有了一个json对象,借助变量“ myList”,任何一个单独的js文件都可以在同一视图文件中对其进行访问。

答案 4 :(得分:-1)

Javascript范围与其他语言的范围不同 所以,如果你写

var UserId = 5; 
var ControlId = 5;

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

它会起作用

结帐http://jsfiddle.net/FgYTL/1/

答案 5 :(得分:-2)

我的mydiv是一个类,id还是一个jQuery变量?看起来你需要做

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