jquery onclick设置段落/文本框值

时间:2011-05-11 09:57:04

标签: javascript jquery jquery-plugins

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

  1. ITEM1
  2. ITEM2
  3. 项目3
  4. 如果我点击第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);
        });
    });
    

    它的工作原理是将链接的文本值发送到段落但它消失的速度非常快,它显示第二个它已经消失了,有什么方法可以防止这种情况发生吗?阻止它消失?

2 个答案:

答案 0 :(得分:3)

试试这个:

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

e.preventDefault()会阻止链接默认执行任何操作(听起来可能会刷新页面......)。

Here's a demo

我还修改了您的选择器 - 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所述,如果处理程序在返回之前出错,则会发生默认事件。

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