Javascript 如何从页面加载调用ajax单击事件?
我有一个单击事件,当我单击按钮时触发,它会打开一个模式界面:Javascript 如何从页面加载调用ajax单击事件?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一个单击事件,当我单击按钮时触发,它会打开一个模式界面: $(".profileF2fClinicalServiceDetails").live("click", function(){ var requestUrl = '/php/includes/ajax.php?operation=profile_edit_f2f_clinical_service_details&service=f2f&counsellor_id='+getPractitionerId($(t
$(".profileF2fClinicalServiceDetails").live("click", function(){
var requestUrl = '/php/includes/ajax.php?operation=profile_edit_f2f_clinical_service_details&service=f2f&counsellor_id='+getPractitionerId($(this))+'&counsellor_address_id='+getAddressId($(this))+'&edit_level='+getEditLevel($(this))+'&tab='+getTab($(this));
openDialog(requestUrl, "Edit Face to Face Service Details", 850, "location.replace(getCleanedLocationHref()+'&tab="+getTab($(this))+"');");
return false;
});
但是现在,我想在加载页面时提示触发它,如何直接从HTML调用它?将单击事件中的代码添加到一个独立的函数(而不是闭包),例如,
showPopup
。然后将绑定到单击事件的函数更改为调用showPopup
,并在页面加载时添加对showPopup
函数的调用
注意,从1.7版开始,jQuery的live
函数已被弃用,您应该在上使用()
您必须向函数传递一些参数,因为在初始调用期间您将无法使用this
。第一次调用main函数时,您必须将这些参数传递给它,我不想猜测您将如何确定它
当触发click事件时,可以按照当前使用的方式从元素中提取参数。你会有这样的东西:
$(document).ready(function() {
// add the click event
$(".profileF2fClinicalServiceDetails").on("click", function () {
var Me = $(this);
showPopup(
getPractitionerId(Me),
getAddressId(Me),
getEditLevel(Me),
getTab(Me)
);
});
// call the function right away
showPopup(
[initial_counsellor_id],
[initial_address_id],
[initial_level],
[initial_tab]
);
});
function showPopup(counsellor_id, address_id, level, tab) {
var requestUrl = '/php/includes/ajax.php?operation=profile_edit_f2f_clinical_service_details&service=f2f&counsellor_id='+counsellor_id+'&counsellor_address_id='+address_id+'&edit_level='+level+'&tab='+tab;
openDialog(
requestUrl,
"Edit Face to Face Service Details",
850,
"location.replace(getCleanedLocationHref()+'&tab="+tab+"');"
);
return false;
}
文档和相关阅读
jQuery.ready
-
jQuery.on
-
jQuery.live
-[已弃用
- MDN上的Javascript函数-
您如何处理$(this)
实例?很好的一点--第一次调用将使用什么作为this
?您可以使用bind
轻松解决它,但问题仍然存在。