gpt4 book ai didi

jQuery 编程风格?

转载 作者:行者123 更新时间:2023-12-01 04:28:27 24 4
gpt4 key购买 nike

我最近被要求修复一个我以前从未参与过的网站上的某些内容。我并没有真正使用 jQuery 那么多,但我想我应该看一下,看看是否可以修复它。

我已经设法解决了大部分问题,但我仍然对他们选择构建此网站的方式感到震惊。

在文档加载时,它们用相同的大量函数替换每个 anchor 标记和表单元素的 click() 方法。单击时,该函数会检查标签是否具有几个不同属性(甚至是非标准属性)之一,并根据存在的属性及其值执行各种不同的任务。

某些超链接有一个名为“ajaxrel”的属性,这使得 click() 函数查找另一个具有由 ajaxrel 属性指定的 ID 的(隐藏)超链接,然后调用该其他超链接的 click() 函数(这也被同一个 click() 函数修改)。

在服务器端,所有的 php 文件都相当长并且完全没有缩进。

整个网站的调试简直就是一场噩梦。这是标准的 jQuery 实践吗?这个导航方案看起来很糟糕。还有其他人实际上以这种方式使用 jQuery 吗?我想开始将它合并到我的项目中,但是查看这个网站让我非常头疼。

这是超链接的 click() 函数:

function ajaxBoxA(theElement, urltosend, ajaxbox, dialogbox) {

if ($(theElement).attr("href") != undefined)
var urltosend = $(theElement).attr("href");
if ($(theElement).attr('toajaxbox') != undefined)
var ajaxbox = $(theElement).attr('toajaxbox');

// check to see if dialog box is called for.
if ($(theElement).attr('dialogbox') != undefined)
var dialogbox = $(theElement).attr('dialogbox');

var dodialog = 0;
if (dialogbox != undefined) {
// if dialogbox doesn't exist, then flag to create dialog box.
var isDiaOpen = $('[ajaxbox="' + ajaxbox + '"]').parent().parent().is(".ui-dialog-container");
dodialog = 1;
if (isDiaOpen) {
dodialog = 0;
}
dialogbox = parseUri(dialogbox);
dialogoptions = { close: function () {
// $("[id^=hierarchy]",this).NestedSortableDestroy();
$(this).dialog('destroy').remove()
} };
for ( var keyVar in dialogbox['queryKey'] )
eval( "dialogoptions." + keyVar + " = dialogbox['queryKey'][keyVar]");
};


$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");
$('#TB_load').show();
if (urltosend.search(/\?/) > 0) {
urltosend = urltosend + "&-ajax=1";
} else {
urltosend = urltosend + "?-ajax=1";
}
if ($('[ajaxbox="' + ajaxbox + '"]').length) {
$('[ajaxbox="' + ajaxbox + '"]').each( function () { $(this).empty(); });
};
$.ajax({
type: "GET",
url: urltosend,
data: "",
async: false,
dataType: "html",
success: function (html) {
var re = /^<toajaxbox>(.*?)<\/toajaxbox>+(.*)/;
if (re.test(html)) {
var match = re.exec(html);
ajaxbox = match[1];
html = Right(html, String(html).length - String(match[1]).length);
}
var re = /^<header>(.*?)<\/header>+(.*)/;
if (re.test(html)) {
var match = re.exec(html);
window.location = match[1];
return false;
}
if (html.length > 0) {
var newHtml = $(html);
if ($('[ajaxbox="' + ajaxbox + '"]').length) {
$('[ajaxbox="' + ajaxbox + '"]').each( function () { $(this).replaceWith(newHtml).ready( function () {
ajaxBoxInit(newHtml)
if (window.ajaxboxsuccess) ajaxboxsuccess(newHtml);
}); });
if ($('[ajaxdialog="' + ajaxbox + '"]').length = 0) {
if (dodialog) $(newHtml).wrap("<div class='flora ui-dialog-content' ajaxdialog='" + ajaxbox + "' style='overflow:auto;'></div>").parent().dialog(dialogoptions);
}
} else {
$("body").append(newHtml).ready( function () {
ajaxBoxInit(newHtml);
if (window.ajaxboxsuccess) ajaxboxsuccess(newHtml);
});
if (dodialog) $(newHtml).wrap("<div class='flora ui-dialog-content' ajaxdialog='" + ajaxbox + "' style='overflow:auto;'></div>").parent().dialog(dialogoptions);
}
}
var rel = $(theElement).attr('ajaxtriggerrel');
if (rel != undefined) $('a[ajaxrel="' + rel + '"]').click();
tb_remove();
return false;
},

complete: function () {
$("#TB_load").remove();
}
});
return false;

}

最佳答案

绝对不是。你所描述的不是标准的jquery实践,但似乎是由于对javascript一无所知的人的糟糕设计选择造成的。

关于jQuery 编程风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com