CSS word filter eller kanske userscript istället

Permalänk
Medlem

CSS word filter eller kanske userscript istället

Jag vill få bort en hel DIV på deviantart som innehåller en massa span taggar och sen en a[title~=""] med orden pony, mlp, brony och liknande i title.
Tänkte att jag kunde göra det med CSS först.

div >* a[title~="Pony"] {display:none !important;}

Denna tar dock inte bort hela diven, utan bara det som är länken i diven. Kan ja ta bort hela diven med CSS eller kräver det kanske ett userscript i Tampermonkey/GreaseMonkey istället?
Är inte så jättehemma på alla CSS selectors. Vet inte om det går att "gå tillbaka till gå" så att säga för att ändra en sak som innehåller just den saken.

Visa signatur
Permalänk
Medlem
Skrivet av lassekongo83:

Kan ja ta bort hela diven med CSS

Nej. Det finns ingen selector som hittar föräldern till ett visst element.

Permalänk
Medlem

Så om jag vill göra om detta till ett userscript så antar jag att jag måste använda jQuery?
Jag är ingen expert på detta dock. Hur kan jag få detta lilla skript till att fungera?

// ==UserScript== // @name devArt title filter // @version 0.1 // @description Removes deviations based on title keywords while browsing // @include http://www.deviantart.com/ // ==/UserScript== var filter = ['pony', 'brony', 'fluttershy']; $('a[title~="$filter"]').parent('div').hide();

Gärna med case insensitive ord i "filter".
(browse.deviantart.com ifall ni vill kolla på källkoden på sidan.)

Visa signatur
Permalänk
Medlem
Skrivet av lassekongo83:

Så om jag vill göra om detta till ett userscript så antar jag att jag måste använda jQuery?
Jag är ingen expert på detta dock. Hur kan jag få detta lilla skript till att fungera?

// ==UserScript== // @name devArt title filter // @version 0.1 // @description Removes deviations based on title keywords while browsing // @include http://www.deviantart.com/ // ==/UserScript== var filter = ['pony', 'brony', 'fluttershy']; $('a[title~="$filter"]').parent('div').hide();

Gärna med case insensitive ord i "filter".
(browse.deviantart.com ifall ni vill kolla på källkoden på sidan.)

Hej och tack för alla fina teman du gjort!

En lösning kan se ut så här:

var filter = ['pony', 'brony', 'fluttershy'] $('a[title]'). filter(function() { var title = this.title.toLowerCase() return filter.indexOf(title) != -1 }). parent('div'). hide()

Samtliga a-element med ett title-attribut hittas, de som har en titel i lower-case som motsvarar ett element i filter-arrayen plockas ut, och deras parents döljs.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tack, men jag får inte ditt exempel till att fungera, så jag försökte lite själv istället. Detta fungerar om jag bara kör med a.thumb[title], men då tar den ju bort allt utan keywords. Vill få variabeln 'derp' till att fungera i a.thumb[title*="'+derp+'"] vilket den inte gör.

var derp = ['pony', 'brony', 'fluttershy']; var badtitle = $('a.thumb[title*="'+derp+'"]'); $(badtitle).filter(function() { $(this).parent().parent().parent().parent('div.tt-a').hide(); return false; });

Visa signatur
Permalänk
Medlem
Skrivet av lassekongo83:

Tack, men jag får inte ditt exempel till att fungera, så jag försökte lite själv istället. Detta fungerar om jag bara kör med a.thumb[title], men då tar den ju bort allt utan keywords. Vill få variabeln 'derp' till att fungera i a.thumb[title*="'+derp+'"] vilket den inte gör.

var derp = ['pony', 'brony', 'fluttershy']; var badtitle = $('a.thumb[title*="'+derp+'"]'); $(badtitle).filter(function() { $(this).parent().parent().parent().parent('div.tt-a').hide(); return false; });

Detta ska göra det du vill:

var targetedWords = ['cat', 'mouse', 'moose'] $('a.thumb[title]'). filter(function() { var title = this.title.toLowerCase() return targetedWords.filter(function(word) { return title.indexOf(word) !== -1 }).length !== 0 }). closest('div'). hide()

Om ett eller flera av orden i targetedWords återfinns någonstans i en thumb-title så döljs dess närmsta parent-div (.closest('div'))

edit: fixade fel

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tack, nu fick jag det till att fungera som jag ville.

Visa signatur