我有两个几乎相同的函数,但我不确定如何重构它以便它们可以共享相同的逻辑。
function Content_chkClick(obj) {
var frame = $('#iFM')[0];
if (frame.contentWindow.Content_chkClick) {
frame.contentWindow.Content_chkClick(obj);
} else {
$('.TabContent', frame.contentWindow.document).each(function () {
var frame = this;
if (frame.contentWindow.Content_chkClick) {
frame.contentWindow.Content_chkClick(obj);
}
});
}
}
function Content_invokeClickEvent(id) {
var frame = $('#iFM')[0];
if (frame.contentWindow.Content_invokeClickEvent) {
frame.contentWindow.Content_invokeClickEvent(id);
} else {
$('.TabContent', frame.contentWindow.document).each(function () {
var frame = this;
if (frame.contentWindow.Content_invokeClickEvent) {
frame.contentWindow.Content_invokeClickEvent(id);
}
});
}
}
最终,我想要做的就是拥有像
这样的东西function Content_chkClick(obj) {
someCommonFunction(Content_chkClick, obj);
}
function Content_invokeClickEvent(id) {
someCommonFunction(Content_invokeClickEvent, id);
}
答案 0 :(得分:1)
function Content_xClick(fname, obj) {
function callIfPossible(frame) {
if (frame.contentWindow[fname]) {
frame.contentWindow[fname](obj);
return true;
}
}
if (!callIfPossible($('#iFM')[0])) {
$('.TabContent', $('#iFM')[0].contentWindow.document).each(function () {
callIfPossible(this);
});
}
}
最终,你应该做的就像是
function Content_chkClick(obj) {
Content_xClick("Content_chkClick", obj);
}
function Content_invokeClickEvent(id) {
Content_xClick("Content_invokeClickEvent", id);
}