如何使用具有唯一类名的jquery来定位链接?

时间:2015-06-26 18:26:03

标签: javascript jquery regex

<a href="" class="link unique-lightbox-docid(12345)">Download File</a>

首先,我想将仅具有此类标识符的链接:unique-lightbox-id()'定位到jquery点击操作中。

其次,我希望它在开/关括号内抓取id。

我是否需要使用正则表达式来完成此任务?

3 个答案:

答案 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

一起使用

&#13;
&#13;
$("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;
&#13;
&#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();
});
  1. 使用jQuery选择器传递要查找的partialClassName
  2. 将完整的类作为字符串。
  3. 从完整的类中查找类字符串中的第一个出现位置,以使用indexOf作为起点,并从该出现位置开始获取子字符串。
  4. 应用正则表达式搜索括号括起来的字符串。
  5. 剥离第一个和最后一个字符,因为你知道它们是括号。
  6. 如果您有类class="classname(abc) classname2(xyz) unique-lightbox-docid(12345)"这样的课程,上述方法将确保您从unique-lightbox-docid开始,所以当您返回第一次出现的正则表达式匹配时,您将确保始终拥有正确的身份。

    出于某种原因,这篇文章的代码格式化并没有正确显示,但这里有一个小提琴。

    http://jsfiddle.net/SeanWessell/9svvha3q/1/