jquery - e.nodeName 未定义 Jquery

标签 jquery ajax post

我绞尽脑汁,查看了示例,但不明白为什么 firebug 会抛出“e.nodeName is undefined”错误。

这可能是一些愚蠢的小支架不合适的东西,或者需要第二双眼睛才能看到的东西..

我只是为一些输入制作了一个简单的小ajax帖子,但这是我的第一篇帖子,由于到目前为止我遇到了多少错误,我几乎要拔掉一些头发了..< br/>http://jsfiddle.net/JohnnyDoe/aQYra/

我的脚本

<script type="text/javascript">
    $(document).ready(function () {
        $('.hexen').after('<div class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" onClick="save();" title="Save" style="float:left; height:20px;" onclick="save()"></div><br />') // ui icon
    .keypress(function () {
        $(this).next('.saveButton').show(); //appends ui icon
    });

        $('.saveButton').hide().click(function () {
            $(this).hide(); // removes ui icon on click
        });

        $('.ui-state-default').hover(

    function () {
        $(this).addClass('ui-state-hover');
    }, function () {
        $(this).removeClass('ui-state-hover');
    } //ui icon hover
    );
    });

    function save(value) {
        $('.hexen').each(function () {
            var id = null;
        });
        if ($(this).val() !== '') {
            id = $(this).attr('id');
        }
    }
    $.ajax({
        type: "POST",
        url: "Default.aspx",
        data: "{Id: " + $(".hexen").attr('id') + ", Value: " + $(".hexen").val() + "}",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            console.log(data);
        }
    });
</script> 




我的 HTML

<div id="unvolitive">
<input type="text" class="hexen" id="Text1"/>
<input type="text" class="hexen" id="Text2"/>
<input type="text" class="hexen" id="Text3"/>
<input type="text" class="hexen" id="Text4"/>
<input type="text" class="hexen" id="Text5"/>
</div> 







提前致谢

最佳答案

我认为,从一个简短的 fiddle 测试来看,问题来自于混合正常的 jQuery 事件处理程序和您在标记字符串中定义的 onclick 处理程序(您的 save 功能)。

我不确定您要在保存中执行什么操作; each 调用不执行任何操作:

$('.hexen').each(function () {
    var id = null; // all this does is set a local variable
});

但更重要的是,您使用 onclick 进行设置的方式,this 将是未定义的,因此以下行将不起作用:

if ($(this).val() !== '') {

在这种情况下,this 指的是window 对象,所以我认为这就是您收到错误的原因。要修复此问题,您应该在 jQuery 分配的单击处理程序中处理保存函数:

$('.saveButton').hide()
    .click(function () {
        $(this).hide(); // removes ui icon on click
        var id;
        // get the associated input
        var $input = $(this).prev('.hexen');
        if ($input.val() !== '') {
            id = $input.attr('id');
        }
        console.log(id);
        // presumably, do something with id now...
});

查看working fiddle .

关于jquery - e.nodeName 未定义 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797003/

相关文章:

asp.net-mvc - MVC3 使用 jquery.validate.unobtrusive.js 和 $ ("#form").submit() hijax 不起作用

jquery - 单击视频时动态添加和删除图标

java - GWT - 片段中的参数

javascript - React+webpack+react-hot-loader 在生产中动态将 json 加载到表中

javascript - jquery ajax表单提交

javascript - 带有预先转换的 json url 的 jQuery UI 自动完成

javascript - HTML:决不能让 child 溢出他们的父亲

AJAX 棋盘游戏在 Windows 中运行良好,但在 Linux 中运行不佳

javascript - 通过axios post调用传递参数

javascript - 动态表到 JSON