Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

jQuery selector binnen jQuery gegenereerd gedeelte

Pagina: 1
Acties:

  • ikt
  • Registratie: Juli 2008
  • Laatst online: 21-11 21:16
Hallo!

Ik wil aan img tags de src aanpassen, maar het probleem is dat het erg genest ligt, mede door het gebruik van FeedEk (jQuery script). Dit is de source:

HTML:
1
2
3
4
            <div class="d4x2">
                <h1>What If?</h1>
                <div id="whatif"></div>
            </div>


Dit is de gegenereerde html:
HTML:
1
2
3
4
5
<div id="whatif">
    <ul class="feedEkList">
        <li>
            <div class="itemContent">
                <img src="/imgs/a/90/ygg_pacific.png" title="Really, the combining of all the land into a new supercontinent would be a much more impressive change."></img>

(van xkcd What If rss feed)

Nu wil ik src="/imgs/a/90/ygg_pacific.png" veranderen in src="http://what-if.xkcd.com/imgs/a/90/ygg_pacific.png", dit wil ik doen met

JavaScript:
1
2
3
4
        <script type="text/javascript">
            var newsrc = 'http://what-if.xkcd.com' + $('.itemContent').children('img').attr('src');
            $('.itemContent').children('img').attr('src', newsrc);
        </script>


De selector wil niet werken. Hoe krijg ik dit voor elkaar?

  • Room42
  • Registratie: September 2001
  • Niet online
Wat zegt de log dan? ;)

[ Voor 10% gewijzigd door Room42 op 07-04-2014 21:33 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • xyanide
  • Registratie: September 2006
  • Laatst online: 14:47
Zit het probleem niet in het feit dat jouw script wordt uitgevoerd voordat FeedEk klaar is met het processen van de feed content?

Misschien kan je je code in een callback stoppen van FeedEk zodat je zeker weet dat de content beschikbaar is.

Je kan ook kijken hoeveel items er in de whatif div zitten op het moment van het uitvoeren van de code:

code:
1
console.log($("#whatif").children().length);

[ Voor 25% gewijzigd door xyanide op 07-04-2014 21:40 ]


  • ikt
  • Registratie: Juli 2008
  • Laatst online: 21-11 21:16
Waar kan ik de log vinden?

Ik heb dat stukje javascript gezet beneden het stukje dat de rss feed moet laden. Ik zal dat andere ding eens proberen.

  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

Op F12 hengsten in je browser, en dan de JavaScript console bekijken. Staat vast een foutmelding in.

Om te beginnen zou ik je code pas uitvoeren als het hele document geladen is:

JavaScript:
1
2
3
4
$(document).ready(function () {
    var newsrc = 'http://what-if.xkcd.com' + $('.itemContent').children('img').attr('src');
    $('.itemContent').children('img').attr('src', newsrc);
});


En wat xyanide zegt zou natuurlijk ook goed kunnen. Het kost tijd om die XML feed in te laden en te verwerken, dus mogelijk probeer je een element te wijzigen dat nog niet bestaat. Je zou een functie kunnen schrijven die checkt of het itemContent-element al bestaat en die dan elke x miliseconden uitvoeren (Window.setInterval). Zodra het element daadwerkelijk bestaat kun je het aanpassen, en natuurlijk de check weer weggooien.

  • ikt
  • Registratie: Juli 2008
  • Laatst online: 21-11 21:16
Het wachten opdat de pagina klaar is, werkt niet. Ik heb voor de zekerheid het handmatig geprobeerd (wacht op een klik) en dan werkt het wel. Dit is een... acceptabele workaround voor mij, maar wel een hele hacky workaround. Even het check-functie proberen.

Ik heb wel geprobeerd om $('.itemContent').length te controleren, maar dat heeft ook niet gewerkt.

Update:
Het werkt nu met de checker!
code:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
            var checkExist = setInterval(function() {
                if ($('#whatif').find('img').length) {
                    var newsrc = 'http://what-if.xkcd.com' + $('#whatif').find('img').attr('src');
                    $('#whatif').find('img').attr('src', newsrc);
                    clearInterval(checkExist);
                }
            }, 500);
        </script>


Danku voor de hulp :)

[ Voor 52% gewijzigd door ikt op 07-04-2014 23:54 ]


  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

Dan is het dus inderdaad wachten tot de XML-feed is geladen. Zoiets:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
$(document).ready(function () {
    var itemContentPresent = false;
    function checkForItemContent() {
        itemContentPresent = ($('.itemContent').length > 0) ? true : false;
        if (itemContentPresent) {
            var newsrc = 'http://what-if.xkcd.com' + $('.itemContent').children('img').attr('src');
            $('.itemContent').children('img').attr('src', newsrc);
            window.clearInterval(doCheck);
        }
    }
    var doCheck = window.setInterval(checkForItemContent, 250);
});


Edit- je had het zelf al gefixt :P Mooi!

[ Voor 196% gewijzigd door NNF op 08-04-2014 00:11 ]

Pagina: 1