我有无序的链接列表,我正在尝试获取点击的链接文本。 因此,当我点击某个链接时,我想在我的列表文本底部的段落或文本框中显示为cliked。 所以,如果我有这样的事情:
如果我点击第2项我希望得到它:“你刚刚点击:item2”
我用这个来管理:
jQuery(function () {
$('a').click(function () {
alert('Text is: ' + $(this).text());
});
});
但那是显示警告信息。然后我这样做:
jQuery(function () {
$('a').click(function () {
var name = $(this).text();
$("p#selector").text(name);
$("input#textbox").val(name);
});
});
它的工作原理是将链接的文本值发送到段落但它消失的速度非常快,它显示第二个它已经消失了,有什么方法可以防止这种情况发生吗?阻止它消失?
答案 0 :(得分:3)
试试这个:
jQuery(function () {
$('a').click(function (e) {
e.preventDefault();
var name = $(this).text();
$("#selector").text(name);
$("#textbox").val(name);
});
});
e.preventDefault()
会阻止链接默认执行任何操作(听起来可能会刷新页面......)。
我还修改了您的选择器 - p#selector
效率低下,按ID选择时只需使用#selector
,如jQuery API中所述。
对于id选择器,jQuery使用 JavaScript函数 document.getElementById(),是 效率极高。当另一个 选择器附加到id 选择器,例如h2#pageTitle,jQuery 之前执行额外的检查 将元素标识为匹配。
编辑:由于很明显点击处理程序不是您需要的,请尝试此解决方案:
解析URL以使用jQuery URL Parser获取当前页面,然后找到与该URL对应的链接并获取文本:
var url = "one.htm";
var linktext = $("a[href='" + url + "']").text();
$('#output').text(linktext);
Working demo of that bit(只需进行网址解析,而不是手动设置网址)。
答案 1 :(得分:1)
尝试通过从函数返回false来阻止click事件在处理之后传播。
jQuery(function() {
$('a').click(function () {
var name = $(this).text();
$("p#selector").text(name);
$("input#textbox").val(name);
return false;
});
});
编辑1:这在功能上与@Town提供的答案完全相同,@ Town打败了我
编辑2: return false
与<{1}} 完全相同(这可以防止发生默认事件,但不会阻止其他注册来自解雇的处理程序)或确实.preventDefault()
(它会阻止事件'冒泡'并阻止处理程序进一步向上发射DOM)。返回false导致但是,如@Town所述,如果处理程序在返回之前出错,则会发生默认事件。
基本上......做他说的话。