由于某种原因,无法引用动态添加的类

时间:2019-02-13 20:23:46

标签: javascript jquery html html5 webpage

在点击链接时,我向该元素添加了一个类:

var str = `{Foo} - {Bar} - some text
{Foo} - {Bar} - some different text
{Foo} - {Bar} - this text is always matched correctly because the word boundary at the end {Foo} - {Bar} - so this pattern is ok sharing the same line and/or
{Foo} - {Bar} - multiple lines`;

var rgx = /(\{.+?\})\s-\s\{.+?\}\s-\s(.+?)\b/gi;

var res = str.replace(rgx, '$1 - $2');

console.log(res);

javascript是:

<a class="js-link" data-category="cat123" href="#">some category</a>

当用户提交搜索表单时,我试图获取被单击的链接:

$(".js-link").click(function (e) {
        e.preventDefault();

        $(this).addClass(".js-category-selected");

    });

这总是返回undefined。

我似乎找不到该元素。这种方法有什么问题吗? 是因为此类是动态添加的吗?但是我没有绑定任何东西,只是试图找到该元素。

2 个答案:

答案 0 :(得分:4)

您在添加课程时给班级名称加上.。只需使用.给出名称和访问权限,然后在函数外部的处理程序中获取该函数的数据,就可以访问该函数,甚至在链接获得新类之前,您将始终获得undefined。 / p>

使用$(this).addClass("js-category-selected");代替$(this).addClass(".js-category-selected");

$(".js-link").click(function(e) {
  e.preventDefault();

  $(this).addClass("js-category-selected");
  var selectedCategory = $(".js-category-selected").data("category");

  console.log('selectedCategory:' + selectedCategory);

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="js-link" data-category="cat123" href="#">some category</a>

答案 1 :(得分:1)

您需要在要添加的课程开始时删除.

$(".js-link").click(function(e) {
  e.preventDefault();
  $(this).addClass("js-category-selected");
  var selectedCategory = $(".js-category-selected").data("category");
  console.log('selectedCategory:' + selectedCategory);
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<a class="js-link" data-category="cat123" href="#">some category</a>