числа только толкают к одному индексу в jquery - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь вытолкнуть числа в массиве из переменной. каждый раз, когда флажок нажимается, он возвращает число, которое я затем хочу поместить в массив. но каждый раз все числа объединяются в первой ячейке массива, где мне нужно хранить эти числа отдельно.

Может кто-нибудь помочь?

$('#tbldata tr:has(td)').find('.checkboxes').click(function() { 
    var stuff = [] ;
    var Checked = $(this).prop("checked");
    var sep = 0;
    //var val =   $('#tbldata tr:has(td)').find('.checkboxes').find('td:eq(2)').closest("#reqnum").val();
    if(checked = 'checked')
        alert("clicked");
    sep+ 1;

    var selectedRows = JSON.parse("["+ ($('table._tm' ).find('tbody')// select table body and
    .has( 'input[type=checkbox]:checked' )
    .find( 'td' )
    .find( '.reqnum' )).text() + "]");// checked checkbox element

    stuff.push(selectedRows);
    console.log(stuff);

    $('#buttonDone').click(function() {
        $.ajax({
            type: "POST",
            url: "isdone.php",
            data: {reqnum : reqnum},
            success: function(data)
            {
                alert(data);
                alert("success!");
                //alert("con7: " + con7 + "rowid" + rowid);
            }
        });
        console.log("hello");
    });
});

enter image description here

1 Ответ

0 голосов
/ 04 июля 2018

Метод jquery text() объединяет текстовое содержимое каждого элемента. Вот решение

То же самое относится к var stuff = [];.

$('#tbldata tr:has(td)').find('.checkboxes').click(function() {
  var stuff = $('table._tm' )
    .find('tbody')
    .has('input[type=checkbox]:checked')
    .find('td')
    .find('.reqnum'))
    // Uses map to apply text on each element separately.
    .map(function(){
      return $(this).text();
    })
    // Transform the jquery object to a JS array.
    .toArray();
  console.log(stuff);
});

Я сохранил ваш селектор как есть, хотя, похоже, он может быть проще.

См. Фрагмент ниже для рабочего примера.

$('#container input[type="checkbox"]').click(function(){
  var checkedLabels = $('#container li')
    .has('input[type=checkbox]:checked')
    .find('label')
    .map(function(){
      return $(this).text();
    }).toArray();
  console.log(checkedLabels);
});
#container {
  list-style: none;
  padding: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="container">
  <li><input type="checkbox" id="c1"/> <label for="c1">check 1</label></li>
  <li><input type="checkbox" id="c2"/> <label for="c2">check 2</label></li>
  <li><input type="checkbox" id="c3"/> <label for="c3">check 3</label></li>
  <li><input type="checkbox" id="c4"/> <label for="c4">check 4</label></li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...