- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在一个页面的源代码中,页面的不同部分有4次唯一的外部链接。
我想触发用户点击了哪个点击,因为它之前的某行有一个 id,如果用户点击特定链接,我想将它保存到一个变量中。
一个简单的例子:
<div class="mydiv">
<p id="id1">test<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a> </div>
</div>
<div class="mydiv">
<p id="id2">test<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a> </div>
</div>
<div class="mydiv">
<p id="id3">test<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a> </div>
</div>
如何检查用户是否点击了 ID 为 id2 的第二个链接并将其保存到变量等?在我的页面中还有其他 href,但我只想检查具体情况。
最佳答案
您可以很容易地处理这些 click
事件:
var list = document.querySelectorAll('a[href="www.outboundlink.com"]');
var index;
for (index = 0; index < list.length; ++index) {
list[index].addEventListener("click", handleClick, false);
}
然后在handler中,反复使用parentNode
找到.mydiv
,然后找到id为:
function handleClick() {
var mydiv = this.parentNode;
var p;
while (mydiv && !/\bmydiv\b/.test(mydiv.className)) {
mydiv = mydiv.parentNode;
}
if (mydiv) {
p = mydiv.querySelector("p[id]");
if (p) {
// Use p.id here, it's the ID
}
}
}
请注意,一旦您完成了点击处理,您所在的页面将被拆除并替换为点击链接后的结果。因此,如果您获取变量的 ID,则需要立即对其执行一些操作(例如将其放入本地存储中)。
另请注意,您的链接可能无效,href="www.outboundlink"
是站点内的相对 链接。它需要 http://
、https://
或 //
才能转到另一个站点。
实例:
var list = document.querySelectorAll('a[href="www.outboundlink.com"]');
var index;
for (index = 0; index < list.length; ++index) {
list[index].addEventListener("click", handleClick, false);
}
function handleClick(e) {
var mydiv = this.parentNode;
var p;
while (mydiv && !/\bmydiv\b/.test(mydiv.className)) {
mydiv = mydiv.parentNode;
}
if (mydiv) {
p = mydiv.querySelector("p[id]");
if (p) {
// Use p.id here, it's the ID
alert("The ID is " + p.id);
}
}
e.preventDefault(); // Just for demonstration purposes
}
<div class="mydiv">
<p id="id1">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
<div class="mydiv">
<p id="id2">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
<div class="mydiv">
<p id="id3">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
像许多 DOM 遍历一样,使用像 jQuery 这样的 DOM 包装器库可以使这变得更加简单:
$('a[href="www.outboundlink.com"]').on("click", function() {
var id = $(this).closest(".mydiv").find("p[id]").attr("id");
alert("The ID is " + id); // will be undefined if not found
});
$('a[href="www.outboundlink.com"]').on("click", function() {
var id = $(this).closest(".mydiv").find("p[id]").attr("id");
alert("The ID is " + id);
return false; // Just for demonstration purposes
});
<div class="mydiv">
<p id="id1">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
<div class="mydiv">
<p id="id2">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
<div class="mydiv">
<p id="id3">test
<p>
<p></p>
<p></p>
<p></p>
<div> <a href="www.outboundlink.com"> click </a>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
关于javascript - 从同一个链接点击取不同的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482132/
menu Home Events Technical Schedule
我试图阻止触发默认 anchor 链接和 onclick 事件。 这是 HTML 代码: Google 我正在尝试使用以下 jQuery 代码阻止任何重定向的发生: $("#mylink").cli
我想在单击父 div 上的任意位置时切换我的 div,除非单击 anchor 元素。因此,例如,如果我单击示例中的第一个文本,我希望它切换,但在我的示例中的第二个文本上,我不希望它切换。 JSFidd
我在通过 jQuery 伪造 anchor 点击时遇到问题:为什么我的thickbox在我第一次点击输入按钮时出现,但第二次或第三次却没有出现? 这是我的代码: Link 当我直接点击链接时,它总是
我已经从 Mootools 切换到 jQuery,因为我认为它有更好的支持。我有这样的 HTML: Opcje Opcje Opcje Opcje Opcje Opcje Opcje JS
我是一名优秀的程序员,十分优秀!