2012-03-29 8 views
1

CustomPickedTableという名前のTableがあります。このTableには<td Data-question-id="5">Example</td>などの行の属性があり、行の一部には属性がありません。ただ、私は別のhiddenfieldsにEMを並べ替えることができるようやりたいIDが見つからない場合、別の非表示フィールドの行をjqueryで埋める

<td>example</td>.、これらは私のhiddenfieldsは以下のとおりです。

@Html.HiddenFor(model => model.SelectedCustomQuestions, new { @id = "SelectedQuestionsWithAttr" }) 
@Html.HiddenFor(model => model.SelectedQuestions, new { @id = "SelectedQuestionsWithNoAttr" }) 

私が今持っているコードは、属性"data-question-id"を持つすべての行がSelectedQuestionsWithAttrまで充填されることをです属性を持つ行の隠しフィールドです。

しかし、私のJqueryコードも、属性がない行を塗りつぶして、SelectedQuestiosnWithNoAttr hiddenfieldに塗りつぶしてもらいたいです。

これは単なるSelectedQuestionsWithAttrののHiddenFieldを充填するためのコードです:

   var selectedQuestionsWithAttr = $("#SelectedQuestionsWithAttr"); 
       var currentIds = new Array(); 

       $("#CustomPickedTable").find("td").each(function() { 
        var clickedId = $(this).attr("data-question-id"); 
        currentIds.push(clickedId); 
       }); 

       selectedQuestionsWithAttr.val(currentIds.join(",")); 

       $("form").submit(); 
      } 

は、私はこのために私のjqueryのコードに追加することができます任意の解決策はありますか?あなたがそれらを識別することができるように<td>タグに何かを追加する必要がありますアドバンス

答えて

0

ありがとう:

<td id="[email protected](Model.SelectedQuestions.IndexOf(variable))"> 

次にjQueryのは次のようになります。

var $qWithAttr = $("#SelectedQuestionsWithAttr"); 
var $qWithoutAttr = $("#SelectedQuestionsWithNoAttr"); 
var currentIds = new Array(); 
var missingIds = new Array(); 
$("#CustomPickedTable td[data-question-id]").each(function() { 
    currentIds.push($(this).attr("data-question-id")); 
}); 
$("#CustomPickedTable td:not([data-question-id])").each(function() { 
    missingIds.push($(this).attr("id")); 
}); 
$qWithAttr.val(currentIds.join(",")); 
$qWithoutAttr.val(missingIds.join(",")); 

$("form").submit(); 
+0

それ"テーブルに何らかの属性がないと"これを行うことができなければならない。 – Obsivus

+0

これはtd:not([data-question-id])セレクタはのためです。その関数内で行うことはあなた次第ですが、それらの行をSelectedQuestionsWithNoAttr変数に追加するよう要求しました。そのためには、何らかの方法で識別する必要があります。 – CodingIntrigue

関連する問題