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 else
{ {
const dropdown = await SpinQuery.any( const dropdownInput = await SpinQuery.select(`.gui-settings-dropdown input[key=${info.key}]`);
() => $(`.gui-settings-dropdown:has(input[key=${info.key}])`)); const dropdown = dropdownInput.parentElement;
const list = dropdown.find("ul"); const list = dropdown.querySelector("ul");
const input = dropdown.find("input"); const input = dropdown.querySelector("input");
info.items.forEach(item => info.items.forEach(item =>
{ {
$(`<li>${item}</li>`).appendTo(list) $(`<li>${item}</li>`).appendTo(list)

View File

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

View File

@ -233,10 +233,10 @@ export class ResourceManager
} }
else else
{ {
const dropdown = await SpinQuery.any( const dropdownInput = await SpinQuery.select(`.gui-settings-dropdown input[key=${info.key}]`);
() => $(`.gui-settings-dropdown:has(input[key=${info.key}])`)); const dropdown = dropdownInput.parentElement;
const list = dropdown.find("ul"); const list = dropdown.querySelector("ul");
const input = dropdown.find("input"); const input = dropdown.querySelector("input");
info.items.forEach(item => info.items.forEach(item =>
{ {
$(`<li>${item}</li>`).appendTo(list) $(`<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) if (settings.preserveRank)
{ {
SpinQuery.any( SpinQuery.select(
() => $(".nav-wrapper .searchform,.nav-con #nav_searchform"), () => document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),
searchForm => searchForm =>
{ {
searchForm.addClass("preserve-rank"); searchForm.classList.add("preserve-rank");
if (searchForm.find("a.icons-enabled").length === 0) if (!searchForm.querySelector("a.icons-enabled"))
{ {
searchForm.prepend(/*html*/` searchForm.insertAdjacentHTML("afterbegin", /*html*/`
<a title="排行榜" <a title="排行榜"
class="icons-enabled" class="icons-enabled"
href="https://www.bilibili.com/ranking" href="https://www.bilibili.com/ranking"
@ -29,12 +29,12 @@ if (settings.preserveRank)
} }
else else
{ {
SpinQuery.any( SpinQuery.select(
() => $(".nav-wrapper .searchform,.nav-con #nav_searchform"), () => document.querySelector(".nav-wrapper .searchform,.nav-con #nav_searchform"),
searchForm => searchForm =>
{ {
searchForm.removeClass("preserve-rank"); searchForm.classList.remove("preserve-rank");
searchForm.find("a.icons-enabled").remove(); searchForm.querySelector("a.icons-enabled").remove();
} }
); );
} }

View File

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