如何从循环内部选择特定的jquery元素值?

时间:2014-05-12 22:31:39

标签: jquery asp.net

我试图将一个字符串值放在一个数组中,根据它们与具有类名的所有元素的位置。我得到了一个我想要使用的索引数组,我想使用每个索引值来选择适当的值。

$(function () 
{
    $("#date").datepicker();
    $('input[name=date]').datepicker();
    var dateInput = $("select[name='searchString']");
    var theClassTime = $("input.TextBoxDate");
    var checkedindex = [];
    var classday = [];

    $("input[name='selectedCourses']").each(function (i) 
    {
        if (this.checked) 
        {
            // this works fine
            checkedindex.push(parseInt(i));

            // this is where I’m trying to select values based on index.
            var dayofclass = $(".TextBoxDate:eq(" + checkedindex[i] + ")");

            classday.push(dayofclass);

            alert(classday);
        }
    });
});

Say checkedindex具有值:2,3,9表示在checkedindex的索引0处为2,在1 = 3处且在2 = 9处。我想用2,3和9来做这样的事情:

var dayofclass = $(".TextBoxDate:eq(" + checkedindex[i] + ")");

我在这里做错了什么?

3 个答案:

答案 0 :(得分:0)

您不需要按ID查找复选框,您已经有了对它的引用。如果需要元素,可以使用this,如果需要jquery对象,可以使用$(this)

$(function () 
{
    $("#date").datepicker();
    $('input[name=date]').datepicker();
    var dateInput = $("select[name='searchString']");
    var theClassTime = $("input.TextBoxDate");
    var checkedindex = [];
    var classday = [];

    $("input[name='selectedCourses']").each(function (i) 
    {
        if (this.checked) 
        {
            // this works fine
            checkedindex.push(parseInt(i));

            // this is where I’m trying to select values based on index.
            // this will get the value of the current checkbox
            var dayofclass = $(this).val(); 

            classday.push(dayofclass);

            alert(classday);
        }
    });
});

jsfiddle示例:http://jsfiddle.net/2TJLm/

这基本上是你想要做的吗?

答案 1 :(得分:0)

让事情变得更轻松

只需使用一个数组来存储......

var selectedCourses = $("input[name='selectedCourses']"),
    theClassTime = $("input.TextBoxDate"),
    checkedindex = [],
    go = true;

function dothings() {
    selectedCourses.each(function (i) {//for each possible selection
        var cur = theClassTime.eq(i);//get current selected

        //do something
        if (this.checked) {
            cur.addClass('red');//for checked
            if (go) { checkedindex.push(i); }//store initial selections
        } else {
            cur.removeClass('red');//for non checked
        }
    });
    go = false;//turn off
    alert(checkedindex);//show stored array
}

selectedCourses.on('change', function() { dothings(); });//run on event

dothings();//run initially

made a fiddle 不确定正在使用的标记,因此它只是一个直观的表示

答案 2 :(得分:0)

终于明白了。该代码允许我在页面加载时使用存储在数组中的数据,并在提交表单时对它们进行比较。

 <script type="text/javascript">


      $(function () {

          $("#date").datepicker();
          $('input[name=date]').datepicker();
          var dateInput = $("select[name='searchString']");

          var checkedindex = [];
          var classdate = [];
          var classtime = [];
          var dayofclass = [];
     $("input[name='selectedCourses']").each(function (i) {
         if (this.checked) {

             checkedindex.push(parseInt(i));

         }

     });
     for (var x = 0; x < checkedindex.length; x++) {
         var ind = checkedindex[x];

         var dateofclass = $(".TextBoxDate:eq(" + ind + ")");
         var timeofclass = $(".TextBoxTime:eq(" + ind + ")");
         var classday = $("select[name='searchString']:eq(" + ind + ")");

         classdate.push(dateofclass);
         classtime.push(timeofclass);
         dayofclass.push(classday);


         alert(classdate[x].val() + "  " + classtime[x].val() + " " + dayofclass[x].val());
     }
 });
</script>