在点击链接时,我向该元素添加了一个类:
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。
我似乎找不到该元素。这种方法有什么问题吗? 是因为此类是动态添加的吗?但是我没有绑定任何东西,只是试图找到该元素。
答案 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>