2015-12-11 2 views
0

Я пытаюсь вызвать функцию jQuery после нажатия на четвертый 'td', как показано ниже. Но он не вызывает функцию, я пробовал разные способы получить строку из таблицы.Вызов функции jquery с использованием onclick из td таблицы

<table class='logtable'> 
     <thead> 
      <tr> 
       <th>Time</th> 
       <th>Name</th> 
       <th>Log Note</th> 
      </tr> 
     </thead> 
     <tbody> 
      <?foreach ($logRows as $logRow){?> 
      <tr class="logtr"> 
       <td><?=readable_date($logRow['date_created'])?></td> 
       <td><?=$logRow['first_name']></td> 
       <td><?=$logRow['log_note']?></td> 
       <td class="js-delete-log" data-log-id=<?=$logRow['log_id']?>><span class="delete"> <i class="fa fa-times"></i></span></td> 

      </tr> 
      <?}?> 
     </tbody> 
    </table> 

Ниже приведена функция JQuery, которая вызывается из «td».

// jQuery function to delete the log 

$("body").on("click", ".js-delete-log", function(event) { 
     var el = $(this); 
     var log_id = el.data('log-id'); 

       $.post("../ajax/delete_logs.php", {log_id:log_id,action:'delete_log'})       
       location.reload(); 
    }); 

}); 

Может ли кто-нибудь помочь в решении этой проблемы?

Я попробовал метод ниже.

// $("table.logtable tr.logtr td.js-delete-log").click(function() { 
+1

любая ошибка в консоли –

+0

вы проверили ваш код " «вы пропустили«? »« – UnmeshD

+0

просто выполните простую форму, если вы перезагружаете страницу, нет необходимости в ajax – madalinivascu

ответ

0

Попробуйте использовать attr(), перезагрузите страницу, когда Ajax успешно:

var log_id = el.attr('data-log-id'); 
$.post("../ajax/delete_logs.php", {log_id:log_id,action:'delete_log'},function(data){ 
location.reload(); 
}); 
+1

Почему использовать attr, если jquery предоставить .data() –

+0

, почему использовать ajax вообще, если он перезагружает страницу lol :) – madalinivascu

0

ваш код работает отлично у вас есть дополнительные "});" тег в коде может вызвать проблемы

$("body").on("click", ".js-delete-log", function(event) { 
 
     var el = $(this); 
 
     var log_id = el.data('log-id'); 
 
     alert(log_id) 
 

 
//    $.post("../ajax/delete_logs.php", {log_id:log_id,action:'delete_log'})       
 
    //   location.reload(); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<table class='logtable'> 
 
     <thead> 
 
      <tr> 
 
       <th>Time</th> 
 
       <th>Name</th> 
 
       <th>Log Note</th> 
 
      </tr> 
 
     </thead> 
 
     <tbody> 
 
      
 
      <tr class="logtr"> 
 
       <td>1</td> 
 
       <td>2</td> 
 
       <td>3</td> 
 
       <td class="js-delete-log" data-log-id='50' > 4</td> 
 

 
      </tr> 
 
      
 
     </tbody> 
 
    </table>

0

Можете ли вы попробовать это? (Просто чтобы убедиться, что он достигает этого обработчика событий, так что мы можем подтвердить, если ошибка в случае связывания или позже)

$(document.body).on("click", ".js-delete-log", function(event) { 
     alert("clicked"); 
}); 
+0

Nope .. Это не работает – Wings2fly

+1

@ Wings2fly, если это не работает, тогда проблема в рендеринге td как указал А. Кохар. Проверьте свои инструменты разработчика, чтобы ваш тд выглядел так, как вы хотите. Надеюсь, это помогло. – gurvinder372

1

я думаю, что проблема приходят из этого

<td class="js-delete-log" data-log-id=<?=$logRow['log_id']?>> 

Попробуйте это

<td class="js-delete-log" data-log-id=<?php echo $logRow['log_id'] ?>> 
+1

Нет, '

+0

, если вы используете версию <5.4, это не сработает. –

+0

Это правильно, но мы не можем сказать, что он здесь не так, пока мы не узнаем его версию. –

0

у вас есть дополнительный }); здесь

$("body").on("click", ".js-delete-log", function(event) { 
    var el = $(this); 
    var log_id = el.data('log-id'); 

      $.post("../ajax/delete_logs.php", {log_id:log_id,action:'delete_log'}); //You missed the semicolon here but it's not creating the issue       
      location.reload(); 
    //}); Remove this line 

}); 
0

Существует в вашем коде дополнительные });, это должно работать

$(function(){ 
    $("body").on("click", ".js-delete-log", function(event) { 
     // your code here.... 
    }); 

}); 
0

попробовать этот код

$(document).on("click", ".js-delete-log .delete", function(e) { 
    var el = $(this); 
    var log_id = el.parent().data('log-id'); 
    alert(log_id);    
}); 
Смежные вопросы