jquery onclick 设置段落/文本框值
我有无序列表的链接,我正在尝试获取单击的链接文本。 因此,当我单击某个链接时,我想在单击的列表文本底部的段落或文本框中显示。 因此,如果我有这样的内容:
- item1
- item2
- item3
如果我单击 item2 我希望得到这样的结果:“您刚刚单击了: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);
});
});
它可以将链接的文本值发送到段落,但它消失得很快,它显示大约第二秒就消失了,有什么办法可以防止这种情况吗?为了阻止它消失?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
e.preventDefault()
将阻止链接执行默认情况下正在执行的任何操作(这听起来像是它可能正在刷新页面......)。这是一个演示。
我还修改了您的选择器 -
p#selector
效率低下,您应该在按 ID 选择时简单地使用#selector
,如 jQuery API。编辑:很明显,点击处理程序不是您所需要的,请尝试以下解决方案:
使用 jQuery URL Parser,然后找到该URL对应的链接并获取文本:
该部分的工作演示(只需进行 URL 解析,而不是手动设置 URL)。
Try this:
e.preventDefault()
will prevent the link from doing whatever it is doing by default (which sounds like it could be refreshing the page...).Here's a demo.
I've also amended your selectors -
p#selector
is inefficient, you should simply use#selector
when selecting by ID, as documented in the jQuery API.EDIT: As it's become apparent that the click handler isn't what you need here, try this solution:
Parse the URL to get the current page using a jQuery URL Parser, and then find the link that corresponds to the URL and get the text:
Working demo of that bit (just do the URL parsing instead of setting the URL manually).
尝试通过从函数返回 false 来阻止单击事件在处理后传播。
编辑1:这在功能上与@Town提供的答案相同,@Town比我先一步
编辑2:
return false
不是相当与.preventDefault()
相同(它可以防止默认事件发生,但不会阻止其他注册处理程序触发)或实际上.stopPropagation()
(这会停止事件“冒泡”并阻止 DOM 上层的处理程序触发)。返回 false 会导致 但是 正如 @Town 所说,如果处理程序在返回之前出错,则会发生默认事件。基本上...按他说的做。
Try preventing the click event from propagating after you handle it by returning false from the function.
EDIT 1: Which is functionally identical to the answer provided by @Town, who beat me to it
EDIT 2:
return false
is not quite identical to.preventDefault()
(which prevents the default event from occurring, but does not prevent other registered handlers from firing) or indeed.stopPropagation()
(which stops event 'bubbling' and prevents handlers further up the DOM from firing). Returning false causes both but as @Town says, if the handler errors before returning, the default event will occur.Basically... do what he said.