Onclick仅在第二次点击后才有效

时间:2015-04-07 19:35:44

标签: javascript jquery html

我有一个HTML列表,看起来像

<a onclick="open_file()" id="3.txt">3.txt</a>

我的open_file()功能正在寻找此

function open_file() {
    $("a").click(function (event) {
        var file_name = event.target.id;
        $("#f_name").val(file_name);
        $.ajax({
            url: "docs/" + file_name,
            dataType: "text",
            success: function (data) {
                $("#text_form").val(data);
                $('#text_form').removeAttr('readonly');
                $('#delete_button').removeAttr('disabled');
                $('#save_button').removeAttr('disabled');
            }
        })
    });
}

问题是函数最终只在两次点击此链接后才将数据加载到所有字段(text_formf_name)。它工作即使我第一次点击一个文件,然后点击另一个文件,它加载。有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

您目前正在做的是将onclick事件添加到调用函数的链接,该函数通过jQuery 添加另一个onclick事件。

删除onclick属性和open_file()函数包装器,以便jQuery按预期添加事件。

答案 1 :(得分:1)

您不需要onclick="open_file()"这个:

<div id='linkstofiles'>
    <a id="3.txt">3.txt</a>
    //other links go here
</div>

$("#linkstofiles a").click(function (event) {
    var file_name = event.target.id;
    $("#f_name").val(file_name);
    $.ajax({
        url: "docs/" + file_name,
        dataType: "text",
        success: function (data) {
            $("#text_form").val(data);
            $('#text_form').removeAttr('readonly');
            $('#delete_button').removeAttr('disabled');
            $('#save_button').removeAttr('disabled');
        }
    })
});

答案 2 :(得分:0)

当你的html中有onclick时,你不需要再次在函数中绑定点击事件。

同样对于$ is not defined,您需要将jquery库放在头部。