2016-07-30 3 views
0

チェックボックスをオンにすると、フォームが表示されます。フォームがキャンセルされた場合は、チェックボックスをオフにします。表形式(第2形式)で参照行をテーブル行のチェックボックスに保存するにはどうすればよいですか?

EDIT

、その後、最初のフォームに移動し、[キャンセル]ボタンをクリックし、チェックボックスに上をスクロールし、いずれかをご確認ください。チェックしたボックスまでスクロールします。 HTMLで

jsfiddle

は、私が定義:

var curRow = $(this).closest('.trow').find('input[type=checkbox]'); 
$("#current-row",curRow); 

にconsole.logを示しています:

$("#current-checkbox") 
[<input id=​"current-checkbox" type=​"checkbox" class=​"hidden">​] 
関連するJSで
<input id="current-checkbox" type="checkbox" class="hidden" /> 

が、私は現在の位置を保存します

ザ・解除フォームJS:

$("#cancel-email").on('click', function (e) { 
    debugger 
    e.preventDefault(); 
    setTimeout(function() { showMessage(1, 'Emails not sent.') }, 2000); 
    setTimeout(function() { hideEmailElems(); }, 2000); 
    $("#current-checkbox").find("input[type=checkbox]").prop("checked", false).focus(); 
}); 

にconsole.log:

$("#current-checkbox").find("input[type=checkbox]").length 
0 

チェックボックスを保存見つけるために正しいjQueryのセレクタとは何ですか?

+1

私はあなたの質問に従うことができません。 CMVE – Amit

+1

を作成すると '.find()'文は必要なくなり、 'id'セレクタは正しい要素を取得します。 – Polyov

+0

$( "#current-checkbox")。prop( "checked"、false)を使用できます。 .find()関数または.closet()関数を使用する必要はありません。 –

答えて

2

$("#current-checkbox")はidによってセレクタであるため、1つの要素(チェックボックス)のみを選択します。

find(selector)

方法見つける子マッチした要素内のセレクタに一致要素、そのチェックボックス要素は、子要素を持たないため、空にこの場合$("#current-checkbox").find("input[type=checkbox]")にそう。

したがって、.find()部分は必要ありません。 $("#current-checkbox")で十分です。

有効なHTMLでは、the id attributeユニークである必要があります。したがって、idセレクタは最大でも1つの要素と一致します。

テーブル行のチェックボックスへの参照を保存するにはどうすればよいですか?

チェックボックスをオンにする必要はありません。代わりに:checkedセレクタを使用して、どこからでも見つけることができます。

$("#cancel-email").on('click', function(e) { 
    // Un-check the checked checkbox 
    $(".trow input[type=checkbox]:checked").prop("checked", false); 

    // Hide the E-Mail box 
    $('#main-container').hide(); 
}); 
+0

意味はありますが、ソリューションを実装した後もチェックボックスがオンになっています(コンソールがそれを示したとしても、$( "#current-checkbox")。prop( "checked")false)? –

+0

@rontornambe最低限のライブデモを作成してください。 –

+0

遅刻編集にごめんなさい - 病院の部屋で働いています。粗いjsfiddleには申し訳ありません。治療に入ると、もう一度返信するまでに時間がかかることがありますので、時間を取ってください。 –

関連する問題