2013-02-06 3 views
2

J'aimerais pouvoir décharger setStatus() pour prendre quelques arguments - mais pour l'instant je ne peux même pas obtenir les sélecteurs codés en dur travail. Comment décharger la fonction setStatus() correctement?en passant 'this' en paramètre mais opérer dans le contexte de la fonction appelante

HTML

<div id="first:test"> <span class="statusFlag"></span> 
    <br/> 
    <input type="checkbox" value="Stuff">Box 1</input> 
    <input type="checkbox" value="Stuff">Box 2</input> 
    <input type="checkbox" value="Stuff">Box 3</input> 
</div> 
<div id="second:test"> <span class="statusFlag"></span> 
    <br/> 
    <input type="checkbox" value="Stuff">Box 1</input> 
    <input type="checkbox" value="Stuff">Box 2</input> 
    <input type="checkbox" value="Stuff">Box 3</input> 
</div> 
<div id="noTest"> 
    <input type="checkbox" value="stuff">No Validate</input> 
</div> 

Jquery

$('[id$=test] input:checkbox').change(function() { 
    if ($(this).parent().children('input:checkbox').filter(':checked').length > 0) { 
    setStatus(this); 
    } else { 
    $(this).closest('[id$=test]').find('.statusFlag').css('color', 'red').text('Incomplete'); 
    } 
}); 

function setStatus(oldthis){ 
    alert(oldthis); 
    $(oldthis).closest('[id$=test]').find('statusFlag').css('color', 'green').text('Complete'); 
} 

L'idée est de passer sélecteurs dynamiquement et ont mis en texte pour chaque section div ... donc finalement quelque chose comme:

setStatus(this, '[id$=test]', 'red', 'Incomplete'); 

Violon ici http://jsfiddle.net/pMAXs/

Répondre

1

Vous ne trouvez pas de classe dans le second sélecteur.

$(oldthis).closest('[id$=test]').find('statusFlag').css('color', 'green').text('Complete'); 

"statusFlag" -> ".statusFlag"

En supposant que je compris votre objectif final d'être correcte, voir: http://jsfiddle.net/pMAXs/3/

+0

Ugh. On se sent comme lundi. Merci pour l'aide avec un autre ensemble d'yeux. – tsalb

Questions connexes