2013-02-06 101 views
2

我希望能够卸载setStatus()以接受几个参数 - 但现在我甚至无法将硬编码选择器工作。我如何正确卸载setStatus()函数?传递'this'作为参数,但在调用函数的上下文中运行

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'); 
} 

的想法是动态传递选择和对每个格部分文字集......所以最终是这样的:

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

这里拨动 http://jsfiddle.net/pMAXs/

回答

1

您在第二个选择器中找不到类。

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

“statusFlag” - > “.statusFlag”

假设我理解你的最终目标是正确的,请参阅:http://jsfiddle.net/pMAXs/3/

+0

唉。感觉像星期一。感谢您与另一组眼睛的帮助。 – tsalb

相关问题