将'this'作为参数传递,但在调用函数的上下文中操作

时间:2013-02-06 19:14:58

标签: jquery jquery-selectors parameter-passing this

我希望能够卸载setStatus()以获取一些参数 - 但是现在我甚至无法使硬编码选择器工作。我如何正确卸载setStatus()函数?

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

这个想法是动态地传递选择器并为每个div部分设置文本...所以最终类似于:

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

在这里小提琴 http://jsfiddle.net/pMAXs/

1 个答案:

答案 0 :(得分:1)

您没有在第二个选择器中找到一个类。

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

“statusFlag” - &gt; “.statusFlag”

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