javascript - jquery如何触发点击具有相同类但不同文本的链接
问题描述
我需要触发表中链接的点击事件。每个链接都有相同的类,但不同的值/文本。
以一个员工表为例,其中包含 ID 和名称两列。第一列包含每个员工 ID 的链接。单击链接时,将显示一个显示相同 ID 的警告框。
假设我有一个文本框,用户将在其中输入 Emp ID。通过点击按钮,会触发表中具有相同Emp ID的链接的点击事件。
注意:我的网络应用程序不仅仅如此。我只需要一种方法来触发每个链接的点击事件并获取其相应的文本。
$(".lnkid").on("click", function() {
var id = $(this).text();
alert("Emp. ID: " + id);
});
$("#btntriggerlink").on("click", function() {
var trigger_id = $("#txtid").val();
//code to trigger click event goes here
});
.lnk-ref {
text-decoration: underline;
cursor: pointer;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1001</a></td>
<td>Maria Rose</td>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1002</a></td>
<td>Adler Brown</td>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1003</a></td>
<td>Sonjia Dean</td>
</tr>
</thead>
</table>
<br> Input Employee Number: <input type="text" id="txtid" />
<button id="btntriggerlink">Trigger Link Event</button>
</div>
这是一个jsfiddle提前感谢我能得到的任何帮助。:)
解决方案
You have two issues in your code. Firstly, the class on the a
elements is lnkid
, not linkid
. Secondly, eq()
is used to select an element by its index, whereas you want to select it by its text. To do that you can use filter()
, like this:
$(".lnkid").on("click", function() {
var id = $(this).text();
alert("Emp. ID: " + id);
});
$("#btntriggerlink").on("click", function() {
var trigger_id = $("#txtid").val().trim();
$(".lnkid").filter(function() {
return $(this).text().trim() == trigger_id;
}).trigger('click');
});
.lnk-ref {
text-decoration: underline;
cursor: pointer;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1001</a></td>
<td>Maria Rose</td>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1002</a></td>
<td>Adler Brown</td>
</tr>
<tr>
<td><a class='lnkid lnk-ref'>1003</a></td>
<td>Sonjia Dean</td>
</tr>
</thead>
</table>
<br> Input Employee Number: <input type="text" id="txtid" />
<button id="btntriggerlink">Trigger Link Event</button>
</div>
An alternative to filter()
is :contains
, but note that the latter will hit on any element which contains the text in any location, eg: Foo 1001 bar
. filter()
requires an exact match.
推荐阅读
- sql - 当条件包含 IS NULL OR LEN(@localvariable) 时,SQL 非常慢
- python - 如果只实例化一次,是否应该创建一个类?
- python - 在python中将数据框记录列表组合成单个数据框
- java - 基于 Spring Boot AuthenticationProvider 的 IP 白名单不起作用?
- ios - 如何将 UIView 附加到 UITextView?
- python - python中使用cx_freeze的问题,错误查找文件
- angular - Angular test gives error - Failed: Cannot read property 'className' of undefined
- javascript - 带有 ajax 选择的字段包含有关从搜索字段读取的产品的数据
- python - 加载前修改模块命名空间
- javascript - 如何访问嵌套数组和对象数据结构中的属性?