Javascript 使用EventArgs传递参数

Javascript 使用EventArgs传递参数,javascript,asp.net,jquery,Javascript,Asp.net,Jquery,我想知道是否可以将参数传递给从AJAX扩展器调用的javascript事件(在本例中为自动完成),同时保留正在传递的EventArgs。下面是我的意思的一个简短示例: <... OnClientItemSelected="DoThis(somevar, eventargs);" /> 这就是我的想法。有人知道怎么做吗?如果可能的话?你问什么还不清楚,但是……我还是要试试看。听起来您实际上是想增加传递给事件处理程序的事件数据。有很多方法可以做到这一点: 如果您使用的是jQuery:

我想知道是否可以将参数传递给从AJAX扩展器调用的javascript事件(在本例中为自动完成),同时保留正在传递的EventArgs。下面是我的意思的一个简短示例:

<... OnClientItemSelected="DoThis(somevar, eventargs);" />

这就是我的想法。有人知道怎么做吗?如果可能的话?

你问什么还不清楚,但是……我还是要试试看。听起来您实际上是想增加传递给事件处理程序的事件数据。有很多方法可以做到这一点:

如果您使用的是jQuery:

首先,可以使用2个或3个参数调用
bind()
方法:

  • bind(eventName,eventHandler)
  • bind(事件名称、数据、事件处理程序)
如果使用3个参数调用
bind()
,则第二个参数
data
是传递给事件处理程序的任意对象,作为传递给事件处理程序的
事件
实例的
.data
属性

其次,事件处理程序是一个闭包,其词法范围包括创建闭包时在范围内的变量。例如,在jQuery中将事件处理程序绑定到事件的通常方式如下:

$(function(){

   var pi = 3.1415926 ;

   var phoneticAlphbet = { a = "alpha" , b = "bravo" , c = "charlie" ,
                           ...
                           x = "x-ray" , y = "yankee" , z = "zulu"
                         } ;

  $('input:radio[name=buttonset1]').click(function(){
    // at this point, the variables pi and phonetic alphabet are in-scope,
    // as well as any other globals you've created

    // do something here
  }) ;

}) ;
这是将数据传递给事件处理程序的第二种方法

第三种方法是挂起DOM树元素的数据。jQuery方便地提供了执行此操作的
data()
方法:

  • .data(名称、值)
    在包装集上设置一个值
  • .data(name)
    从包装集检索值
例如,此代码段将保存页面上每个和元素的原始值:

$('input,select').each(function(){
  var item = $(this) ;
  item.data( 'original-value' , item.val() ) ;
}) ;
设置后,可以检索该值:

$('input#password').change(function(){
  var item = $(this) ;
  var oldValue = item.data('original-value') ;
  var newValue = item.val() ;
  if ( oldValue == newValue )
  {
    alert('the new password must be different than the old password!') ;
  }
}) ;

非常感谢。这就是教训:)
$('input#password').change(function(){
  var item = $(this) ;
  var oldValue = item.data('original-value') ;
  var newValue = item.val() ;
  if ( oldValue == newValue )
  {
    alert('the new password must be different than the old password!') ;
  }
}) ;