javascript - jQuery - 数组元素作为选择器

标签 javascript jquery arrays variables attributes

我创建了一个小脚本来“喜欢”我经常访问的某个论坛上的帖子,该脚本按预期工作,喜欢特定线程上的每个帖子。

现在我想通过使其像某些用户的帖子而不是每个用户的帖子来改进它,到目前为止,我设法使其适用于特定用户:

$(function(){

var TargetLink = $("[data-author='SpecificUser'] span:contains('Like')" );

if (TargetLink.length )
    TargetLink.each ( function () {

        var clickEvent  = document.createEvent ("HTMLEvents");
        clickEvent.initEvent ("click", true, true);
        this.dispatchEvent (clickEvent);
    } );

 });

但是我不知道如何让它为多个用户工作,因为我对 jquery 和 javascript 很陌生,事实上我只是开始学习它,以便我可以制作这个脚本。

我的想法是有一个包含用户名的数组,将属性“data-autor”的值设为变量,然后循环喜欢的函数,但我不知道该怎么做。

html 树看起来像这样:

<li id="post-####" class="message   " data-author="User 1">
<div>
    <div>
        .
        .
        .
        <span class="LikeLabel">Like</span>
.
.
.
<li id="post-####" class="message   " data-author="User 2">
<div>
    <div>
        .
        .
        .
        <span class="LikeLabel">Like</span>

我想做这样的东西:

var userNames = ["User1", "User 2", "User 3",...,"User N"];

然后在我的脚本中使用数组的元素作为属性 [data-autor='userNames'] 的值,因此只有来自特定用户列表的帖子才会被喜欢,但我不知道如何,我已经阅读了几个问题,但似乎没有一个可以帮助我解决我的具体问题,我找到的所有教程都非常基础,并且不涉及使用数组中的元素作为属性值。

最佳答案

尝试

// do stuff at `click` event
$("span").on("click", function(e) {
  // log `user` , `html` of `span` element
  console.log($(e.target).parent().data("author"), e.target.innerHTML);
});
// array of user names; note "User 6" does not exist at `html`
var userNames = ["User 1", "User 2", "User 3"
                , "User 4", "User 5", "User 6"];
// loop through items within `userNames` array
var links = function links(arr) {
  // return a
  return $(arr).map(function(i, user) {
    // create jQuery object
    var TargetLink = $("[data-author='" + user + "'] span:contains('Like')");
    // does element, collection exist ?
    if (TargetLink.is("*")) {
      // if element , collection exists, loop through collection
      TargetLink.each(function() {
        // do stuff 
        var clickEvent = document.createEvent("HTMLEvents");
        clickEvent.initEvent("click", true, true);
        this.dispatchEvent(clickEvent);
      })
    };
    // return `TargetLink` element, collection as jQuery object,
    // if user does not exist , will not be included in results
    return TargetLink[0]
  })
};
console.log(links(userNames));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div data-author="User 1"><span>Like</span>
</div>
<div data-author="User 2"><span>Like</span>
</div>
<div data-author="User 3"><span>Like</span>
</div>
<div data-author="User 4"><span>Like</span>
</div>
<div data-author="User 5"><span>Like</span>
</div>

关于javascript - jQuery - 数组元素作为选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997563/

相关文章:

javascript - 在新的 clone() div 中显示隐藏的 div

php - 如何使用 php 以特定顺序显示从 mysql 数据库检索的数据

javascript - 有没有办法在addEventListener中使用js写的html?

javascript - 使用 AJAX 的动态级联下拉列表

javascript - 在react中调用默认的prop函数

javascript - 延迟jquery不起作用

javascript - Jquery 循环浏览多个图像并一次显示 3 个图像

javascript - 使用 jQuery 和 Javascript 更改 DIV 内容的功能不起作用

php - 显示数组中所有元素的数据类型

arrays - 数组切片上的矢量化和