即使文档准备就绪,JQuery也不会选择元素

Jie*_*eng 3 javascript jquery knockout.js

我的代码就像

function populate...() {
    var user = $.storage.get("particulars");

    if (user) {
        console.log($("#frmRegister")); // returns [] why? 
        $("#frmRegister").find("input[name=name]").val(user.name).end()
        .find("input[name=email]").val(user.email).end()
        .find("input[name=contact]").val(user.contact).end()
        .find("input[name=faculty]").val(user.faculty).end()
        .find("input[name=course]").val(user.course).end()
        .find("input[name=year]").val(user.year).end();
    }
    console.log("out")
}

$(function() {
    eventsViewModel.populateRegistrationForm();
})
Run Code Online (Sandbox Code Playgroud)

完整代码

我想知道为什么$("#frmRegister")在日志中返回null,而在chrome中我使用控制台来$("#frmRegister")获取表单

Knockout.js是否会干扰这些事情?我的表格如下:

<form action="" 
  method="POST"
  data-bind="submit: $root.submitRegistration, visible: !registered()"
  id="frmRegister"
>
Run Code Online (Sandbox Code Playgroud)

UPDATE

有关代码,请参见http://octopus.phpfogapp.com/.有问题的行是第154行.(除非我改变它.如果是这样,你可能会搜索$("#frmRegister").find("input[name=name]")或者可能$("#frmRegister

Inc*_*ito 9

而不是像这样写你的表格......

 <form action="" method="POST" data-bind="submit: $root.submitRegistration, visible: !registered()" id="frmRegister">
...
Run Code Online (Sandbox Code Playgroud)

写这样:

 <form action="/give/a/url.here" method="POST" id="frmRegister">
Run Code Online (Sandbox Code Playgroud)

jQuery有一大堆问题,比如使用存储和数据绑定作为超级全局,但你的具体问题是:

    if (user.name != "") {
        $("#frmRegister").find("input[name=name]").val(user.name).end()
        .find("input[name=email]").val(user.email).end()
        .find("input[name=contact]").val(user.contact).end()
        .find("input[name=faculty]").val(user.faculty).end()
        .find("input[name=course]").val(user.course).end()
        .find("input[name=year]").val(user.year).end();
    }
Run Code Online (Sandbox Code Playgroud)

可以写成:

    if (user.name != "") {
        $("#frmRegister input").val(user.[$(this).prop('name')]).end()
    }
Run Code Online (Sandbox Code Playgroud)
  • 停止超级链接,当你这样做时,你会创建自己的问题.
  • jQuery很难看,我给你看的代码很糟糕
  • 您的代码中还存在其他问题,我强烈建议您除了学校教授的内容外,还要学习.一个很好的起点是我们网站上JavaScript标记维基.
  • 我实际上没有测试过我发布的内容,我现在正在大门上班.

  • 用户询问jQuery没有选择属性的原因; 虽然我喜欢代码清理,但实际上并没有回答他/她的问题.另外我个人认为jQuery很简洁.此外,您发布的代码将无法按预期工作,因为"this"已脱离上下文 - 应该在那里调用`each`.无论哪种方式,它都没有解决这个问题.见@jimrandomh (2认同)