То, что вы показали, должно корректно отрабатывать.
Не зная общей картины вашего скрипта, предположу две вещи.
1. Где-то в скрипте вы опечатались.
2. Где-то в скрипте вы пытаетесь изменить значение атрибута data-num и после этого опять обращаетесь к num через $(селектор).data().
А т.к. data() кеширует изначальное значение, то после того как вы его измените , вызов data() вернет только изначальный результат.
CODE (
javascript):
скопировать код в буфер обмена
//Попробуйте изменить это
var $checkNum = parseInt($(this).data('num'));
//на
var $checkNum = this.dataset.num * 1; // умножим на единицу, что бы значение привести к числу
// Произведите все манипуляции
//проверьте результат