<a href="" class="link unique-lightbox-docid(12345)">Download File</a>
首先,我想将仅具有此类标识符的链接:unique-lightbox-id()'定位到jquery点击操作中。
其次,我希望它在开/关括号内抓取id。
我是否需要使用正则表达式来完成此任务?
答案 0 :(得分:2)
不要将ID作为课程的一部分。使用data
属性就是它们的用途。然后在匹配正常的类时获取该属性。
$('.link').click(function (e) {
e.preventDefault();
var id = $(this).data('docid');
alert(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="" class="link" data-docid="doc1">Download File 1</a><br />
<a href="" class="link" data-docid="doc2">Download File 2</a><br />
<a href="" class="link" data-docid="doc3">Download File 3</a><br />
答案 1 :(得分:0)
尝试将Attribute Contains Selector [name*="value"]
String.prototype.match()
与参数RegExp
/\(.*\)/
,String.prototype.slice()
与参数1, -1
$("a[class*=unique]").on("click", function(e) {
e.preventDefault();
var res = e.target.className.match(/\(.*\)/)[0].slice(1, -1);
// do stuff with `res`
$("body").append("<br>" + res);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<a href="" class="link unique-lightbox-docid(12345)">Download File</a>
&#13;
答案 2 :(得分:0)
我会这样做。
var partialClassName = 'unique-lightbox-docid';
$('[class*="' + partialClassName + '"]').click(function(e){
var fullClass = $(this).attr('class');
var firstMatchStr = fullClass.substring(fullClass.indexOf(partialClassName), fullClass.length);
var elementId = firstMatchStr.match(/\(.*\)/)[0].slice(1, -1);
$('#' + elementId).html('This is element with id ' + elementId);
e.preventDefault();
});
如果您有类class="classname(abc) classname2(xyz) unique-lightbox-docid(12345)"
这样的课程,上述方法将确保您从unique-lightbox-docid开始,所以当您返回第一次出现的正则表达式匹配时,您将确保始终拥有正确的身份。
出于某种原因,这篇文章的代码格式化并没有正确显示,但这里有一个小提琴。