我想定位页面上的元素并使用jQuery对其进行更改。我决定为每个域编写一个脚本,而不是为每个域编写单独的脚本。
逻辑很简单:
脚本的工作方式如下:
这样,如果我想定位一个新域,我所要做的就是将域名添加到域列表中,并添加一个标签列表以该域为目标。快速简单。
不幸的是,我只是无法理解如何用动态变量填充jQuery选择器……这是正确的术语吗?有可能吗?
这里是代码(为简便起见,有些是伪代码“ PC:”)
var domains = ["google", "mozilla", "stackoverflow"];
// tags per domain (note: variable names match domain names)
var google = "#header, #footer";
var mozilla = ".left-col, .right-col";
var stackoverflow = ".sidebar, #main-container";
// PC: store the current page URL in a variable using "window.location.href"
// PC: test list of domains against URL using .match() and store the result in the variable "pageDomain"
因此,我现在有一个保存域名的变量和一个变量(与域名同名),该变量保存要定位到该域的标签。如何使用正确的var名称填充jQuery选择器(显示为“ DVN”的占位符)。
$(DVN).css("outline", "1px solid red");
如果我将变量硬编码到jQuery选择器(例如mozilla)中,脚本可以正常工作,但是如何为动态生成的变量名实现呢?是否有jQuery语法?
为了使脚本正常工作,我最终使用了switch语句,但是我对该解决方案真的不满意。似乎有点笨拙,每次添加新域时,我都必须修改switch语句...这可能会变得很长。
// result from .match() converted to string to allow strict comparison
var stringyDomain = pageDomain.toString();
// this will be used to populate the jQuery code
var dynamicVariableName;
switch (stringyDomain) {
case "google":
dynamicVariableName = google;
break;
case "mozilla":
dynamicVariableName = mozilla;
break;
case "stackoverflow":
dynamicVariableName = stackoverflow;
break;
}
“ dynamicVariableName”现在可以硬编码到jQuery选择器中。
必须有更好的方法!