2012-11-21 96 views
2

我有以下功能删除一行。我想通过传入#search_result来重用此功能。如何将变量传递给click事件处理程序?

function row_delete_ajax(event) { 
    event.preventDefault(); 
    if (confirm(gettext('Are you sure you want to delete this row?'))) { 
    var url = $(this).attr("href") + "/"; 

     $.post(url, function(result){ 
      $('#search_result').empty(); 
      $('#search_result').append(result); 
     });     
    }  
}; 

这是我最初如何绑定功能,但那种卡住如何#search_result传递给row_delete_ajax

$(document).ready(function(){ 
    $('#search_result').find(".row_delete_ajax").click(row_delete_ajax); 
} 
+0

这应该对你有帮助 - http://www.quirksmode.org/js/events_access.html –

回答

3

这样做的另一种方法是使用[eventData]参数:

EVENTDATA:数据的地图将被传递给事件处理程序。

$(document).ready(function(){ 
    // Create an object with all the properties you want. 
    var data = { id: '#search_result' }; 

    // Pass the data object as the first parameter in the click-event. 
    $('#search_result').find(".row_delete_ajax").click(data, row_delete_ajax); 
}); 

,然后用它是这样的:

function row_delete_ajax(event) { 
    event.preventDefault(); 
    if (confirm(gettext('Are you sure you want to delete this row?'))) { 
    var url = $(this).attr("href") + "/"; 

     $.post(url, function(result){ 
      $(event.data.id).empty(); 
      $(event.data.id).append(result); 
     });     
    }  
}; 

同时检查event.data例如。

+1

我喜欢这种方式。其实是想知道是否有一种方法可以访问事件参数的属性。这很有趣。仅供参考,我不是那个问这个问题的人。 –

2

你有没有想过使用存储的数据()http://api.jquery.com/jQuery.data/元信息?

$(document).ready(function(){ 
    $('#search_result').find(".row_delete_ajax") 
     .data('target', 'search_result') 
     .click(row_delete_ajax); 
} 

然后你row_delete_ajax将如下所示:

function row_delete_ajax(event) { 
    event.preventDefault(); 
    if (confirm(gettext('Are you sure you want to delete this row?'))) { 
     var url = $(this).attr("href") + "/"; 

     var target = $(this).data('target'); 
     $('#' + target).load(url); 
    } 
} 
2

你得稍微重写你的点击是这样的:

$(document).ready(function(){ 
    $('#search_result').find(".row_delete_ajax").click(function (event) { 
     row_delete_ajax(event, $("#search_result")); 
    }); 
} 

然后改变你的函数取两个参数:

function row_delete_ajax(event, searchResult) { 
    event.preventDefault(); 
    if (confirm(gettext('Are you sure you want to delete this row?'))) { 
     var url = $(this).attr("href") + "/"; 

     $.post(url, function(result){ 
      searchResult.empty(); 
      searchResult.append(result); 
     });     
    }  
}; 
相关问题