1

我以前从未见过有人这样做,所以我想我会把它扔在那里。

我有一个遗留页面,在每个单选按钮列表上都有一个内联 onclick 事件:

onclick="handleService(document.forms.ContactForm,5,16,5,0,0);" 

此代码执行 AJAX 调用以获取其他 HTML,然后根据单击的单选按钮附加其他表单元素。这个 handleService 函数包含在一个远程 Javascript 文件中,我无法在本地编辑或复制该文件,因为它是动态生成的并且可以更改。

我想知道是否可以使用 jQuery(或其他方式)来捕获这个 onclick 事件,然后以某种方式向它添加一个回调函数。

每次单击单选按钮时,我都试图让两个表格列的高度相同。添加额外的表单元素会导致其中一列的大小增加/缩小。我尝试在 onclick 中调用 handleService 之后直接添加我的函数来修复高度,但是在添加其他表单元素之前高度得到修复,大概是因为在我调用修复高度之前 AJAX 调用尚未完成(因此需要回调)。

更新这是我对 ajaxComplete 的调用(也是一个像 ajaxSucess 这样的全局函数):

$('.gq_steps').ajaxComplete(function(e, xhr, settings) {
    alert('here');
    if (settings.url == 'geoquote_services.php') {
        $('#first_col').height($('#third_col').height());
    }
});

handleService 没有使用 jQuery,但这没关系,对吧?ajaxSucess/ajaxComplete 无论如何都应该获取所有 ajax 请求。我什至尝试将其一直简化为以下代码,但仍然没有被调用。

$(document).ajaxComplete(function() {
    console.log('here'); 
});

我把它放在 $(document).ready(...) 调用中。不应该吗?

4

1 回答 1

0

听起来您可能对 jQuery 的ajaxSuccess() 事件处理程序感兴趣。

由于您希望您的代码在该请求完成运行,并且您似乎无权访问该其他文件以在其中添加回调,因此您可以使用绑定侦听器ajaxSuccess然后运行高度修复的强硬方法.

像这样的东西: $('.your-columns').ajaxSuccess(function(e,xhr,settings){ // 测试这是否是我们的函数 // 然后修复高度。});

请注意,无论发生什么,它ajaxSuccess都会在每次Ajax 调用上运行,这是相当笨拙的,您肯定需要进行测试以确保您正在处理正确的响应并需要使用您的代码。由于 HTML 又回来了,您总是可以测试是否存在某些元素$(xhr.responseText)或类似的东西。

于 2011-06-20T21:02:00.767 回答