特定のクラス名の要素を非表示または表示する関数があります。
$.fn.questionDetails = function(base_element, details_yes_no) {
var details_element = '.' + base_element + '_details';
var radio_element = '#' + base_element + '_' + details_yes_no;
if ($(radio_element).attr('checked')) {
$(details_element).show();
} else {
$(details_element).hide();
}
}
この関数をアタッチ/バインドして、ページが読み込まれたときと特定のラジオ ボタン グループが変更されたときに 2 つのパラメーターで呼び出されるようにします。現時点では、これを達成するために次のコードを使用しています。
$(function() {
// $.fn.questionDetails defined here, in same scope
$.fn.questionDetails('question1', 'yes');
$('input:radio[name=question1]').change().questionDetails('question1', 'yes');
}
最初の関数呼び出しは正常に機能します。ページが読み込まれると、question1_details パネルが表示または非表示になります。ただし、選択されているラジオボタンを変更すると、関数が正しく呼び出されないように見えます。また、change() 行を次のように変更しても機能しません。
$('input:radio[name=question1]').change($.fn.questionDetails('question1', 'yes'));
「ページがロードされたとき、および特定のラジオボタングループが変更されたときに、これらのパラメーターを使用してこの関数を呼び出す」と、最小限の繰り返しで言えるようにしたいと考えています。これについて最善の方法は何ですか?私はjQueryに比較的慣れていないので、最初から「間違った」方法でやっている可能性があります。
編集:これは最初に言及する必要がありました-私はjQuery 1.7.1を使用しています。