【问题标题】:jQuery to hide specific comments from forumsjQuery 隐藏论坛中的特定评论
【发布时间】:2019-06-30 13:21:33
【问题描述】:

所以,我正在学习一些 jQuery,我决定将朋友提出的请求用作训练场。 I'm trying to create a script for greasemonkey that when a selected user posts something in a thread on the Overwatch forums: (https://us.forums.blizzard.com/en/overwatch/c/general-discussion) it hides that specific comment from the entire thread.

相关论坛通过名为data-user-id="XXXX" 的标签识别用户,这是我在选择要隐藏的帖子时想用作脚本目标的标签

预期的行为是,当脚本运行并通过我提供的用户 ID 发现某个用户写了一些东西时,它只会将其整个帖子隐藏在我当前正在阅读的线程中。

这些是我做的一些实验:

//Experiment 1
$('#post_2:contains("data-user-id="XXXX"")').remove();

//Experiment 2
$('.boxed.onscreen-post:contains("XXXX")').remove();

//Experiment 3
$("#post_2 > .boxed.onscreen-post:contains('XXXX')").remove();

我在使用动态 ID 的概念来定位有问题的元素并使其读取 div 的内容以查找用户的 ID 时有点挣扎。

这些查询确实没有给我任何错误,所以我的猜测是他们找不到执行操作所需的文本字符串。

【问题讨论】:

标签: jquery forum


【解决方案1】:

我想你只需要这个:

$('[data-user-id="XXXX"]').remove();

如果您想使用 css :contains(),请删除字符串引号。根据W3Schools jQuery :contains() Selector,您只需将不带引号的字符串放在 :contains() 选择器中。这将在元素 .onscreen-post 的开始和结束标记之间查找文本。所以不是在它的属性中,而是在块的真实内容中。

$('.boxed.onscreen-post:contains(XXXX)').remove();

// Or when it is a variable
var searchFor = 'XXXX';
$('.boxed.onscreen-post:contains(' + searchFor + ')').remove();

上述内容不适用于您的 data-user-id="XXXX" 等 html 属性。如果您希望 :contains() 选择器在不完全匹配的 html attr 上的行为,您需要选择器中的 *= ,如下所示:

$('[data-user-id*="XXXX"]').remove();

// Or when it is a variable
var searchFor = 'XXXX';
$('[data-user-id*="' + searchFor + '"]').remove();

【讨论】:

  • 谢谢!这让我对它的工作原理有了更广泛的了解,我完全错误地理解了“包含”与容器混合的概念......哎呀......非常感谢!
【解决方案2】:

function hidePostsFromUsers(nicknames) {
  var posts$ = $('.contents.ember-view .topic-list-item');

  var filteredPosts$ = posts$.filter(function(ignore, el) {
    return nicknames.some(function(nick) {
      return $(el).find('[data-user-card]').attr('data-user-card') === nick;
    });
  });
  filteredPosts$.remove();
}

hidePostsFromUsers(['Doomfish-21368']);

【讨论】:

  • 这更像是一个完整的线程移除器,而不是一个线程中的单个帖子移除器,但我非常感谢它,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多