jQuery-script werkt niet onder chroom, safari en gedeeltelijk opera, FF is goed

vandaag heb ik hier om hulp gevraagd met deze script .

Het was succesvol - nogmaals bedankt aan RKW.

Ik heb de code samengevoegd met mijn vorige en alles lijkt goed te werken - onder FF. Maar nu heb ik het geprobeerd onder Chrome, Safari (mac) en Opera. In Chrome en Safari doet het script helemaal niets (en blijft de foutconsole helder). Onder opera werkt alleen het eerste deel - de actieve klasse wordt toegevoegd.

Suggesties?

$(document).ready(function(){
    $('input').focus(function() { /* add class active to parent div */
        $('div').removeClass('active');
        $(this).parent().parent().parent().addClass('active');
        $(this).closest("div").addClass('active');
    });

    $('input:radio').focus(function() { /* add class highlight to specified tds in one column */
        var num = 2;
        var col = $(this).closest('td').index() + 1;
        var row = $(this).closest('tr').index();

        var tds = $('td:nth-child(' + col + ')');
        tds = tds.slice(row,row+num);

        $('td').removeClass('highlight');
        tds.addClass('highlight');
    });
});
0
Je moet je html of zelfs een betere jsfiddle plaatsen. Het is erg moeilijk om te raden wat uw HTML-structuur is op basis van uw javascript.
toegevoegd de auteur mrtsherman, de bron
Je krijgt betere/snellere antwoorden als je publiceert wat relevant is in de vraag. Mensen houden er niet van door te klikken en andere antwoorden te lezen, alleen maar om je huidige vraag te begrijpen.
toegevoegd de auteur mrtsherman, de bron
Gezien de lay-out van de HTML die je hebt opgegeven, omdat de enige ingangen radioknoppen zijn, kun je al die code in de invoer plaatsen: radio of invoer
toegevoegd de auteur Matt R, de bron
Er is een link naar mijn vorige bericht, waar is de html. Ik probeer niet te veel dubbele inhoud te plaatsen ...
toegevoegd de auteur Petr Illek, de bron
mrtsherman: bedankt voor uw advies. Ik ben nieuw op deze site - ik heb veel te leren.
toegevoegd de auteur Petr Illek, de bron

2 antwoord

Ik weet niet zeker wat je met je highlight-klasse probeert te doen (zoals in hoe/wat het zou moeten benadrukken) maar er zijn een paar wijzigingen die je moet aanbrengen om de klassen correct toe te passen op de div's.

In plaats van .focus() te gebruiken, wilt u het volgende gebruiken:

$('input').click(function()

en

$('input:radio').focus(function()

One note about input:radio is that it will have to use jQuery's engine to find the radio buttons since it is not a stenard CSS2/3 selector. If speed of execution is crucial, use Thiago Santos' type='radio' (since CSS understens this, so will your browser).

Het andere ding dat ik heb veranderd is dit:

$('div').removeClass('active');

Since it didn't find the divs in chrome, however to do the same thing in a page when I was messing with transforms, I found all the elements that used the .active class en removed them from all elements before setting $(this) element with the tag. Changing it to:

$('.active').removeClass('active');

JSFiddle Voorbeeld

Ik merkte ook dat je CSS ' nth-child gebruikte, houd er rekening mee dat dit niet werkt voor IE8 of minder (of IE9 in de quirks-modus).

1
toegevoegd
Bedankt voor uitgebreid antwoord. Het werkt nu in Chrome en Safari. Maar de opera gedraagt ​​zich nog steeds hetzelfde. het eerste deel wordt uitgevoerd, het tweede niet - maar het is misschien gerelateerd aan een Drupal en jQuery-afkeer. Gemarkeerd als beantwoord.
toegevoegd de auteur Petr Illek, de bron

Probeer in het tweede deel te veranderen:

$("input:radio")...

naar

$("input[type='radio']")...
0
toegevoegd
jammer .. wat ik deed was een gok .. maar ik denk dat je een sample moet toevoegen jsfiddle dus ppl kan beter begrijpen wat het probleem is
toegevoegd de auteur MilkyWayJoe, de bron
Dank je. Maar geen verschil. Hetzelfde gedrag ...
toegevoegd de auteur Petr Illek, de bron