2

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/

4

1 に答える 1

1

2番目のセレクターにクラスが見つかりません。

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

"statusFlag"-> ".statusFlag"

私があなたの最終目標が正しいことを理解したと仮定して、http://jsfiddle.net/pMAXs/3/を参照してください。

于 2013-02-06T19:22:01.973 に答える