2009-07-28 3 views
1

Es werde zwei - gleich in Form von Optionen - Radio Gruppen A und B. Ich versuche, über jQuery zu garantieren, dass, wenn einige Option in A ausgewählt ist, dann ist es entsprechende Option ist ausgewählt in B, und umgekehrt.Synchonisation ‚radiogroups‘ mit jQuery

Mein aktueller Ansatz ist diese:

$(document).ready(function() { 
    $(".groupA > input").click(function() { 
     $(".tutored-radio > input ").click(); 
    }); 

    $(".groupB > input").click(function() { 
     $(".online-radio > input").click(); 
    }); 
}); 

Hinweis: jedes Optionsfeld innerhalb einer Spanne ist. Ich habe die Klasse nicht direkt der Eingabe zugewiesen, da es in einem von asp.net generierten Runtime-ListItem schwierig ist.

Das offensichtliche Problem ist, dass es ist eine Endlosschleife: es ein Element klickt und löst die Klick-Aktion, die es wieder klicken, und so weiter ...

Was sind Ihre Vorschläge Dies? Ich habe einige Ideen, aber ich habe sie nicht erwähnt, weil ich denke, dass sie zu "hacky" sind, aber wenn sie sich als notwendig erweisen werden, werden sie darüber reden.

Vielen Dank im Voraus!

+0

Wenn Sie sagen, gleichwertig, was meinst du? Gleichwertige Position/Index in der Gruppe? Äquivalentwert? –

+0

Ich bin daran interessiert zu wissen, was Ihre ‚Hacky‘ Vorschläge –

+0

sind Sie würden entweder das Click-Ereignis zu manipulieren sein, um es den Ereignishandler nicht ausgelöst (weiß nicht, ob es möglich ist - wahrscheinlich nicht) oder tut nur die simulierten klicken, wenn der Radiobutton ist noch nicht ausgewählt (nicht besonders "hacky", aber es stellt sich heraus, dass es eine einfachere Lösung gibt) –

Antwort

3

anstatt versuchen, klicken Sie auf den arrtibute Tag einstellen.

$(document).ready(function() { 
    $(".groupA > input").click(function() { 
     $(".tutored-radio > input ").attr(”checked”, “checked”); 
    }); 

    $(".groupB > input").click(function() { 
     $(".online-radio > input").attr(”checked”, “checked”); 
    }); 
}); 
+0

Arbeitete wie ein Cham, danke! –

1

Wenn Sie entsprechende Option sagen, was meinst du? Ich werde Sie value

etwas wie das folgende

$(function() { 

    $('span:has(input:radio)').click(function() {    
     var $this = $(this); 
     var val = $('input:radio', $this).attr('checked','checked').val(); 
     var group = $this.hasClass('groupA') ? '.groupB' : '.groupA';  
     $(group + '> input:radio[value="' + val + '"]').attr('checked','checked');    
    }); 

}); 

ist funktioniert bedeuten nehmen hier ein Working Demo

+0

Obwohl der Wert auch in "äquivalenten" Schaltflächen gleich ist, wäre die "Definition" von "äquivalent" in diesem Kontext "innerhalb eines Bereichselements mit derselben Klasse". –

+0

Überprüfen Sie auch meinen Kommentar zu meiner ursprünglichen Frage über meine "Hacky" -Lösungen. –