有人让我帮他们将一个函数附加到一个使用JQuery UI Tabs的页面。他们想要这个功能,这样当一个标签突出显示并再次点击它时,它会带你到一个包含更多信息的外部页面。
我编写了以下函数,当单击选项卡时会触发该函数。它会向选定的选项卡添加第二个事件处理程序。当第二个事件触发时,它将自行删除,然后通过第一个单击事件再次添加。这样可以防止重复。
function activeClick(id) {
//add event for active tab
$('.ui-state-active #' + id).on("click.activeclick", function() {
//determine what tab was selected and clicked by pulling the text value of
//the tab into a variable
var tabLocation = $('.ui-state-active #' + id).text();
//Open new window and show the correct department page
window.open("http://www.website.com/dept/" + tabLocation);
//remove the click event referenced by the activeclick namespace preventing duplications.
$('.ui-state-active #' + id).off("click.activeclick");
});
}
我必须通过我们的第三方IT部门发送它以获得批准,他们已经给它'好',尽管他们告诉我将事件处理程序附加到已经存在的事件是不好的做法。除了编辑UI Tabs文件(我认为这是对此请求的过度反应)之外,我不太明白为什么会这样或者除此之外的其他方式,我将能够添加此事件处理程序。
我觉得他们可能只是说这是不好的做法,因为他们是第一个被要求这样做的人,他们回来后说这是一个不可能的要求。所以,实际上,我在不知不觉中展示了它们,它们可能只是在挽回面子。但是,在我认为我会问的机会中,他们是对的吗?这是不好的做法吗?