Remove some $.find $.has calls

This commit is contained in:
the1812 2019-03-24 11:30:21 +08:00
parent 6119809806
commit 454f7b995a
9 changed files with 55 additions and 50 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1858,10 +1858,10 @@ class ResourceManager
}
else
{
const dropdown = await SpinQuery.any(
() => $(`.gui-settings-dropdown:has(input[key=${info.key}])`));
const list = dropdown.find("ul");
const input = dropdown.find("input");
const dropdownInput = await SpinQuery.select(`.gui-settings-dropdown input[key=${info.key}]`);
const dropdown = dropdownInput.parentElement;
const list = dropdown.querySelector("ul");
const input = dropdown.querySelector("input");
info.items.forEach(item =>
{
$(`<li>${item}</li>`).appendTo(list)

View File

@ -1858,10 +1858,10 @@ class ResourceManager
}
else
{
const dropdown = await SpinQuery.any(
() => $(`.gui-settings-dropdown:has(input[key=${info.key}])`));
const list = dropdown.find("ul");
const input = dropdown.find("input");
const dropdownInput = await SpinQuery.select(`.gui-settings-dropdown input[key=${info.key}]`);
const dropdown = dropdownInput.parentElement;
const list = dropdown.querySelector("ul");
const input = dropdown.querySelector("input");
info.items.forEach(item =>
{
$(`<li>${item}</li>`).appendTo(list)

View File

@ -233,10 +233,10 @@ export class ResourceManager
}
else
{
const dropdown = await SpinQuery.any(
() => $(`.gui-settings-dropdown:has(input[key=${info.key}])`));
const list = dropdown.find("ul");
const input = dropdown.find("input");
const dropdownInput = await SpinQuery.select(`.gui-settings-dropdown input[key=${info.key}]`);
const dropdown = dropdownInput.parentElement;
const list = dropdown.querySelector("ul");
const input = dropdown.querySelector("input");
info.items.forEach(item =>
{
$(`<li>${item}</li>`).appendTo(list)

View File

@ -1 +1 @@
(()=>{return(e,t)=>{const{ThemeColors:n}=t.import("theme-colors");const{SettingsSearch:i}=t.import("settings-search");const{Validator:s}=t.import("text-validate");function o(e){let t=e.nextElementSibling;const n=[];while(t!==null&&!t.classList.contains("category")){n.push(t);t=t.nextElementSibling}return n}function a(e,t){$(`input[type='checkbox'][key='${e}']`).prop("checked",t);$(`input[type='text'][key='${e}']`).val(t)}function c(){for(const[t,n]of Object.entries(e)){a(t,n)}}function r(){$(".gui-settings-mask").on("click",()=>{$(".gui-settings-widgets-box,.gui-settings-box,.gui-settings-mask").removeClass("opened")});$("input[type='text'][key]").each((t,n)=>{$(n).attr("placeholder",e[$(n).attr("key")])});$(".gui-settings-content ul li.category").on("click",e=>{const t=document.querySelector(".gui-settings-search");if(t.value!==""){t.value="";raiseEvent(t,"input")}e.currentTarget.classList.toggle("folded");o(e.currentTarget).forEach(e=>e.classList.toggle("folded"))});$(".gui-settings-dropdown>input").on("click",e=>{$(e.currentTarget).parent().toggleClass("opened")});onSettingsChange((t,n,i)=>{if(e[t]!==i){e[t]=i;$(`input[type='checkbox'][key='${t}']`).prop("checked",i).change();$(`input[type='text'][key='${t}']`).val(i).change()}})}function l(){const t=e=>{};$("input[type='checkbox'][key]").each((n,i)=>{$(i).on("change",()=>{const n=i.getAttribute("key");const s=i.checked;e[n]=s;t(n);saveSettings(e)})});$("input[type='text'][key]").each((n,i)=>{$(i).on("change",()=>{const n=i.getAttribute("key");const o=s.getValidator(n).validate(i.value);e[n]=o;i.value=o;t(n);saveSettings(e)})})}function u(){const e={};$(`input[dependencies]`).each((t,n)=>{const i=$(n).attr("dependencies");if(i){e[$(n).attr("key")]=i}});const t=t=>{const n=t.prop("checked");for(const i in e){const s=e[i].split(" ");if(s.indexOf(t.attr("key"))!==-1){let e=true;if(n&&s.every(e=>$(`input[key='${e}']`).prop("checked"))){e=false}const t=$(`li:has(input[key='${i}'])`);const o=e?"addClass":"removeClass";t[o]("disabled");$(`input[key='${i}'][type='text']`).parent()[o]("disabled")}}};$(`input[type='checkbox'][key]`).on("change",e=>t($(e.target))).each((e,n)=>t($(n)))}function p(){if(typeof offlineData!=="undefined"){$("li:has(input[key=useCache])").addClass("disabled");$("input[key=useCache]").prop("disabled",true)}}function d(){$(".gui-settings-content ul li.category").each((e,t)=>{$(t).click()})}function g(){if(!CSS.supports("backdrop-filter","blur(24px)")&&!CSS.supports("-webkit-backdrop-filter","blur(24px)")){$("input[key=blurVideoControl]").prop("disabled",true);e.blurVideoControl=false;saveSettings(e)}if(window.devicePixelRatio===1){$("input[key=harunaScale]").prop("disabled",true);e.harunaScale=false;saveSettings(e)}if(e.defaultPlayerLayout==="旧版"){const t=$("input[key=overrideNavBar]");t.prop("disabled",true).change();if(e.overrideNavBar){t.prop("checked",false).change();e.overrideNavBar=false;saveSettings(e)}}}function y(){for(const[e,t]of Object.entries(Resource.displayNames)){const n=document.querySelector(`input[key=${e}]`);if(!n){continue}switch(n.type){case"checkbox":n.nextElementSibling.nextElementSibling.innerHTML=t;break;case"text":const e=n.parentElement;if(e.classList.contains("gui-settings-textbox-container")){n.previousElementSibling.innerHTML=t}else if(e.classList.contains("gui-settings-dropdown")){e.previousElementSibling.innerHTML=t}break;default:break}}}(async()=>{t.applyStyle("guiSettingsStyle");const e=(t.data.guiSettingsDom||t.data.guiSettingsHtml).text;$("body").append(e);new SpinQuery(()=>$("body"),e=>e.length>0&&!(unsafeWindow.parent.window===unsafeWindow),e=>$(".gui-settings-icon-panel").css("display","none")).start();r();p();c();u();l();d();g();y();(new n).setupDom();new i})()}})();
(()=>{return(e,t)=>{const{ThemeColors:n}=t.import("theme-colors");const{SettingsSearch:i}=t.import("settings-search");const{Validator:s}=t.import("text-validate");function o(e){let t=e.nextElementSibling;const n=[];while(t!==null&&!t.classList.contains("category")){n.push(t);t=t.nextElementSibling}return n}function c(e,t){$(`input[type='checkbox'][key='${e}']`).prop("checked",t);$(`input[type='text'][key='${e}']`).val(t)}function a(){for(const[t,n]of Object.entries(e)){c(t,n)}}function r(){$(".gui-settings-mask").on("click",()=>{$(".gui-settings-widgets-box,.gui-settings-box,.gui-settings-mask").removeClass("opened")});$("input[type='text'][key]").each((t,n)=>{$(n).attr("placeholder",e[$(n).attr("key")])});$(".gui-settings-content ul li.category").on("click",e=>{const t=document.querySelector(".gui-settings-search");if(t.value!==""){t.value="";raiseEvent(t,"input")}e.currentTarget.classList.toggle("folded");o(e.currentTarget).forEach(e=>e.classList.toggle("folded"))});$(".gui-settings-dropdown>input").on("click",e=>{$(e.currentTarget).parent().toggleClass("opened")});onSettingsChange((t,n,i)=>{if(e[t]!==i){e[t]=i;$(`input[type='checkbox'][key='${t}']`).prop("checked",i).change();$(`input[type='text'][key='${t}']`).val(i).change()}})}function l(){const t=e=>{};$("input[type='checkbox'][key]").each((n,i)=>{$(i).on("change",()=>{const n=i.getAttribute("key");const s=i.checked;e[n]=s;t(n);saveSettings(e)})});$("input[type='text'][key]").each((n,i)=>{$(i).on("change",()=>{const n=i.getAttribute("key");const o=s.getValidator(n).validate(i.value);e[n]=o;i.value=o;t(n);saveSettings(e)})})}function u(){const e={};document.querySelectorAll(`input[dependencies]`).forEach(t=>{const n=t.getAttribute("dependencies");if(n){e[t.getAttribute("key")]=n}});const t=t=>{const n=t.checked;for(const i in e){const s=e[i].split(" ");if(s.indexOf(t.getAttribute("key"))!==-1){let e=true;if(n&&s.every(e=>$(`input[key='${e}']`).prop("checked"))){e=false}let t=document.querySelector(`input[key='${i}']`);while(t.nodeName.toLowerCase()!=="li"){t=t.parentElement}const o=e?"add":"remove";t.classList[o]("disabled");const c=document.querySelector(`input[key='${i}'][type='text']`);c&&c.parentElement.classList[o]("disabled")}}};$(`input[type='checkbox'][key]`).on("change",e=>t(e.target)).each((e,n)=>t(n))}function p(){if(typeof offlineData!=="undefined"){document.querySelector(".gui-settings-checkbox-container>input[key=useCache]").parentElement.parentElement.classList.add("disabled");document.querySelector("input[key=useCache]").disabled=true}}function d(){$(".gui-settings-content ul li.category").each((e,t)=>{$(t).click()})}function g(){if(!CSS.supports("backdrop-filter","blur(24px)")&&!CSS.supports("-webkit-backdrop-filter","blur(24px)")){$("input[key=blurVideoControl]").prop("disabled",true);e.blurVideoControl=false;saveSettings(e)}if(window.devicePixelRatio===1){$("input[key=harunaScale]").prop("disabled",true);e.harunaScale=false;saveSettings(e)}if(e.defaultPlayerLayout==="旧版"){const t=$("input[key=overrideNavBar]");t.prop("disabled",true).change();if(e.overrideNavBar){t.prop("checked",false).change();e.overrideNavBar=false;saveSettings(e)}}}function y(){for(const[e,t]of Object.entries(Resource.displayNames)){const n=document.querySelector(`input[key=${e}]`);if(!n){continue}switch(n.type){case"checkbox":n.nextElementSibling.nextElementSibling.innerHTML=t;break;case"text":const e=n.parentElement;if(e.classList.contains("gui-settings-textbox-container")){n.previousElementSibling.innerHTML=t}else if(e.classList.contains("gui-settings-dropdown")){e.previousElementSibling.innerHTML=t}break;default:break}}}(async()=>{t.applyStyle("guiSettingsStyle");const e=(t.data.guiSettingsDom||t.data.guiSettingsHtml).text;$("body").append(e);new SpinQuery(()=>$("body"),e=>e.length>0&&!(unsafeWindow.parent.window===unsafeWindow),e=>$(".gui-settings-icon-panel").css("display","none")).start();r();p();a();u();l();d();g();y();(new n).setupDom();new i})()}})();

View File

@ -1 +1 @@
(()=>{return(e,n)=>{SpinQuery.any(()=>$(".head-content.bili-wrapper>div.search:not(.filter-item)"),e=>{const n=$(document.querySelector(".nav-con.fr"));e.detach().insertAfter(n)});if(e.preserveRank){SpinQuery.any(()=>$(".nav-wrapper .searchform,.nav-con #nav_searchform"),e=>{e.addClass("preserve-rank");if(e.find("a.icons-enabled").length===0){e.prepend(`\n <a title="排行榜"\n class="icons-enabled"\n href="https://www.bilibili.com/ranking"\n target="_blank">\n <i class="icon-rank"></i>\n </a>\n `)}})}else{SpinQuery.any(()=>$(".nav-wrapper .searchform,.nav-con #nav_searchform"),e=>{e.removeClass("preserve-rank");e.find("a.icons-enabled").remove()})}SpinQuery.any(()=>$("#banner_link"),()=>n.removeStyle("tweetsStyle"));if(!e.showBanner){n.applyStyle("noBannerStyle")}else{n.removeStyle("noBannerStyle")}}})();
(()=>{return(e,n)=>{SpinQuery.any(()=>$(".head-content.bili-wrapper>div.search:not(.filter-item)"),e=>{const n=$(document.querySelector(".nav-con.fr"));e.detach().insertAfter(n)});if(e.preserveRank){SpinQuery.select(()=>document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),e=>{e.classList.add("preserve-rank");if(!e.querySelector("a.icons-enabled")){e.insertAdjacentHTML("afterbegin",`\n <a title="排行榜"\n class="icons-enabled"\n href="https://www.bilibili.com/ranking"\n target="_blank">\n <i class="icon-rank"></i>\n </a>\n `)}})}else{SpinQuery.select(()=>document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),e=>{e.classList.remove("preserve-rank");e.querySelector("a.icons-enabled").remove()})}SpinQuery.any(()=>$("#banner_link"),()=>n.removeStyle("tweetsStyle"));if(!e.showBanner){n.applyStyle("noBannerStyle")}else{n.removeStyle("noBannerStyle")}}})();

View File

@ -8,14 +8,14 @@ SpinQuery.any(
);
if (settings.preserveRank)
{
SpinQuery.any(
() => $(".nav-wrapper .searchform,.nav-con #nav_searchform"),
SpinQuery.select(
() => document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),
searchForm =>
{
searchForm.addClass("preserve-rank");
if (searchForm.find("a.icons-enabled").length === 0)
searchForm.classList.add("preserve-rank");
if (!searchForm.querySelector("a.icons-enabled"))
{
searchForm.prepend(/*html*/`
searchForm.insertAdjacentHTML("afterbegin", /*html*/`
<a title="排行榜"
class="icons-enabled"
href="https://www.bilibili.com/ranking"
@ -29,12 +29,12 @@ if (settings.preserveRank)
}
else
{
SpinQuery.any(
() => $(".nav-wrapper .searchform,.nav-con #nav_searchform"),
SpinQuery.select(
() => document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),
searchForm =>
{
searchForm.removeClass("preserve-rank");
searchForm.find("a.icons-enabled").remove();
searchForm.classList.remove("preserve-rank");
searchForm.querySelector("a.icons-enabled").remove();
}
);
}

View File

@ -98,44 +98,49 @@ function listenSettingsChange()
function listenDependencies()
{
const dependencies = {};
$(`input[dependencies]`).each((_, element) =>
document.querySelectorAll(`input[dependencies]`).forEach(element =>
{
const dep = $(element).attr("dependencies");
const dep = element.getAttribute("dependencies");
if (dep)
{
dependencies[$(element).attr("key")] = dep;
dependencies[element.getAttribute("key")] = dep;
}
});
const checkBoxChange = element =>
{
const checked = element.prop("checked");
const checked = element.checked;
for (const key in dependencies)
{
const dependency = dependencies[key].split(" ");
if (dependency.indexOf(element.attr("key")) !== -1)
if (dependency.indexOf(element.getAttribute("key")) !== -1)
{
let disable = true;
if (checked && dependency.every(k => $(`input[key='${k}']`).prop("checked")))
{
disable = false;
}
const li = $(`li:has(input[key='${key}'])`);
const action = disable ? "addClass" : "removeClass";
li[action]("disabled");
$(`input[key='${key}'][type='text']`).parent()[action]("disabled");
let li = document.querySelector(`input[key='${key}']`);
while (li.nodeName.toLowerCase() !== "li")
{
li = li.parentElement;
}
const action = disable ? "add" : "remove";
li.classList[action]("disabled");
const text = document.querySelector(`input[key='${key}'][type='text']`);
text && text.parentElement.classList[action]("disabled");
}
}
};
$(`input[type='checkbox'][key]`)
.on("change", e => checkBoxChange($(e.target)))
.each((_, e) => checkBoxChange($(e)));
.on("change", e => checkBoxChange(e.target))
.each((_, e) => checkBoxChange(e));
}
function checkOfflineData()
{
if (typeof offlineData !== "undefined")
{
$("li:has(input[key=useCache])").addClass("disabled");
$("input[key=useCache]").prop("disabled", true);
document.querySelector(".gui-settings-checkbox-container>input[key=useCache]").parentElement.parentElement.classList.add("disabled");
document.querySelector("input[key=useCache]").disabled = true;
}
}
function foldAllCategories()