Frage

Ich bin mit dem .EQ () -Methode ein bestimmten untergeordneten Elemente eines bekannten Elements auszuwählen. Es scheint, daß die Elementindizes unterschiedlich ist in IE und in Chrom / FF, als .EQ (2) verschiedene Werte zurück auf Browser-abhängig. (Das Element Ich suche zeigt sich als .EQ (2) in FF / Chrome, aber .EQ (3) in IE)

Beispiel:

alert($(this).parent().children().eq(2).text());

zeigt unterschiedliche Ergebnisse je nach Browser.

Hier ist das Markup in Frage:

<div>
  <span>
    <input onclick="player.search.Groupings($(this).parent().children().eq(2).text(), $(this).parent().children().eq(0).is(':checked'));" type="checkbox"></input>
    <span>Fake Initiative A</span><span>1</span>
  </span>
  <span>
    <input onclick="player.search.Groupings($(this).parent().children().eq(2).text(), $(this).parent().children().eq(0).is(':checked'));" type="checkbox"></input>
    <span>Initiative B Not Real</span><span>2</span> </span>
</div>

(I gezupft Attribute, Inline-CSS usw. - gleiche Sache, ohne diejenigen, an Ort und Stelle geschieht)

.

Gibt es einen besseren Weg, dies zu tun?

War es hilfreich?

Lösung

sollte ich denke, es mit leerem Textknoten zu tun ist, Firefox wird den Leerraum zwischen sagen wir, die nicht registrieren und die -Tag, wo, wie IE, so dass für FF der zweite Knoten sein die wird Tag ( ), wo, wie es wird der Text-Knoten ( -Leere Text node- ) sein.

EDIT:

Nach einigen Tests (vorherige Antwort war nur ein gemeinsames Problem, das ich in so vermutet laufe sie haben das gleiche für Sie gewesen), Das Problem ist, dass IE nimmt Ihren End-Tag als ein Element in dem dom auf.

Wenn Sie Ihren Code zu kurz schließenden Tags ändern, das heißt:

<div>
  <span>
    <input type="checkbox" />
      <span>Fake Initiative A</span><span>1</span>
  </span>
  <span>
    <input type="checkbox" />
    <span>Initiative B Not Real</span><span>2</span>
  </span>
</div>

Dann sollte es wie vorhergesagt arbeiten.

Gerade als Referenz mein ganzes Testskript (nur der Text Alarmierung):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
    <title>Title here!</title>
    <script type="text/Javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/Javascript">
        $(function(){
            $("input:checkbox").bind('click', function(){
                alert($(this).parent().children().eq(2).text());
            });
        }); 
    </script>
</head>
<body>
<div>
  <span>
    <input type="checkbox" />
    <span>Fake Initiative A</span><span>1</span>
  </span>
  <span>
    <input type="checkbox" />
    <span>Initiative B Not Real</span><span>2</span> </span>
</div>

</body>
</html>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top