2016-03-24 13 views
0

Unten ist mein Original-Code ...Warum funktioniert mein Code nicht nach Refactor zu Funktionscode?

innerTC.find('input[name=tc0]').click(function(){ 
      console.log($(this).siblings('input[name=tc0]')); 
      $(this).siblings('input[name=tc0]').prop('checked', false); 
    }); 
    innerTC.find('input[name=tc1]').click(function(){ 
      console.log($(this).siblings('input[name=tc1]')); 
      $(this).siblings('input[name=tc1]').prop('checked', false); 
    }); 
    innerTC.find('input[name=tc2]').click(function(){ 
      console.log($(this).siblings('input[name=tc2]')); 
      $(this).siblings('input[name=tc2]').prop('checked', false); 
    }); 

aber ich versuche es wie unten ...

var innerTC = $('#pltc').contents(); 
    for(var i=0; i<3; i++) { 
     innerTC.find('input[name=tc' + i + ']').click(function(){ 
      $(this).siblings('input[name=tc' + i + ']').prop('checked', false); 
    }); 
    } 

Aber nicht arbeiten zu einem Funktionscode Refactoring.

+0

@epascarello Ich glaube nicht, dass dies ein Duplikat ist - der Schleifenindex Variable in Strings eingefroren wird. – Pointy

+0

Ich denke, das Problem ist 'var innerTC = $ ('# pltc'). Contents();' – Pointy

+1

Das sollte ziemlich einfach zu beheben sein, jedoch scheint es, dass Sie sowohl Textfeld als auch Kontrollkästchen Eingabeelemente mit den gleichen Namen haben. Könnten Sie Ihre Frage bitte bearbeiten, um ein HTML-Beispiel hinzuzufügen? –

Antwort

3

Versuchen Sie folgendes:

innerTC.find('input[name^=tc]').click(function(){ 
      var attr = $(this).attr('name'); 
      $(this).siblings('input[name='+attr+']').prop('checked', false); 
    }); 

https://jsfiddle.net/y7yre4nt/

+0

Das behebt das Problem, aber logisch ergibt es keinen Sinn. Du wählst das aktuelle Element als ein 'Geschwister()' von sich selbst ... –

+0

@RoryMcCrossan 'Du wählst das aktuelle Element als ein Geschwister() von sich aus 'Wie das? –

+0

'this' = das Element, das den Klick ausgelöst hat. 'attr' = der Name des aktuellen Elements. '$ (this) .siblings ('input [name =' + attr + ']')' = Erhalte die Geschwister des aktuellen Elements mit dem Namen des aktuellen Elements, es ergibt keinen Sinn. –

Verwandte Themen