diff --git a/dreditor.user.js b/dreditor.user.js
index d1367a4..716295b 100644
--- a/dreditor.user.js
+++ b/dreditor.user.js
@@ -2114,6 +2114,36 @@ Drupal.behaviors.dreditorProjectsCollapse = function (context) {
 };
 
 /**
+ * Attach mark as read to project issue tables.
+ */
+Drupal.behaviors.dreditorMarkAsRead = function (context) {
+  $('table.project-issue', context).once('dreditor-issuemarkasread', function () {
+    $(this).find('.marker')
+      .bind('click.dreditor-markasread', function () {
+        var $marker = $(this);
+        // we need to use parent, this.previousSibling might fail on whitespace.
+        var $link = $marker.prev('a');
+        $.get($link.attr('href'), function () {
+          $marker.remove();
+        });
+      })
+      .bind('mouseenter.dreditor-markasread', function () {
+        var $marker = $(this);
+        $marker.data('otext', $marker.text());
+        $marker.css('cursor', 'pointer');
+        $marker.text('mark as read');
+      })
+      .bind('mouseleave.dreditor-markasread', function () {
+        var $marker = $(this);
+        $marker.css('cursor', 'default');
+        if ($marker.data('otext')) {
+          $marker.text($marker.data('otext'));
+        }
+      });
+  });
+};
+
+/**
  * Attach issue count to project issue tables and hide fixed/needs more info issues without update marker.
  */
 Drupal.behaviors.dreditorIssueCount = function (context) {
