jquery onclick 设置段落/文本框值

发布于 2024-11-06 23:59:21 字数 641 浏览 1 评论 0 原文

我有无序列表的链接,我正在尝试获取单击的链接文本。 因此,当我单击某个链接时,我想在单击的列表文本底部的段落或文本框中显示。 因此,如果我有这样的内容:

  1. item1
  2. item2
  3. 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);
    });
});

它可以将链接的文本值发送到段落,但它消失得很快,它显示大约第二秒就消失了,有什么办法可以防止这种情况吗?为了阻止它消失?

I have unordered list of links and i am trying to get the clicked link text.
So when i click on some link i would like to display in paragraph or textbox at the bottom of my list text that is cliked.
So if I have something like this:

  1. item1
  2. item2
  3. item3

If i click on item2 i would like to get it like: "You just clicked:item2 "

And i manage that with this:

jQuery(function () {
    $('a').click(function () {
        alert('Text is: ' + $(this).text());
    });
});

But that is displaying an alert message. then i do this:

jQuery(function () {
    $('a').click(function () {
        var name = $(this).text();
        $("p#selector").text(name); 
        $("input#textbox").val(name);
    });
});

And it works it send text value of a link to paragraph but it disappear really fast, it show it about second and it's gone, is there any way to prevent this? To stop it from disappearing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星星的軌跡 2024-11-13 23:59:21

试试这个:

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
之前执行附加检查
将元素识别为匹配项。

编辑:很明显,点击处理程序不是您所需要的,请尝试以下解决方案:

使用 jQuery URL Parser,然后找到该URL对应的链接并获取文本:

var url = "one.htm";
var linktext = $("a[href='" + url + "']").text();
$('#output').text(linktext);

该部分的工作演示(只需进行 URL 解析,而不是手动设置 URL)。

Try this:

jQuery(function () {
    $('a').click(function (e) {
        e.preventDefault();
        var name = $(this).text();
        $("#selector").text(name); 
        $("#textbox").val(name);
    });
});

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.

For id selectors, jQuery uses the
JavaScript function
document.getElementById(), which is
extremely efficient. When another
selector is attached to the id
selector, such as h2#pageTitle, jQuery
performs an additional check before
identifying the element as a match.

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:

var url = "one.htm";
var linktext = $("a[href='" + url + "']").text();
$('#output').text(linktext);

Working demo of that bit (just do the URL parsing instead of setting the URL manually).

玩心态 2024-11-13 23:59:21

尝试通过从函数返回 false 来阻止单击事件在处理后传播。

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不是相当.preventDefault()相同(它可以防止默认事件发生,但不会阻止其他注册处理程序触发)或实际上.stopPropagation() (这会停止事件“冒泡”并阻止 DOM 上层的处理程序触发)。返回 false 会导致 但是 正如 @Town 所说,如果处理程序在返回之前出错,则会发生默认事件。

基本上...按他说的做。

Try preventing the click event from propagating after you handle it by returning false from the function.

jQuery(function() {
    $('a').click(function () {
        var name = $(this).text();
        $("p#selector").text(name); 
        $("input#textbox").val(name);
        return false;
    });
});

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文