jQuery find()返回undefined

时间:2015-04-16 23:50:22

标签: javascript jquery angularjs

我有一个非常典型的表单,带有一些输入和一个提交按钮,但是当我尝试使用jQuery的find()方法时,我得到了一些令人烦恼的不一致的结果。如下:

$("#frmContact").find(":submit") -> undefined is not a function  
$("#frmContact").find(".btn") -> works
$("#frmContact").find(".btn.secondary") -> undefined is not a function
$("#frmContact").find("input[type=submit]") -> works
$("#frmContact input:submit") -> undefined is not a function
$("input[type=submit]", "#frmContact") -> undefined is not a function
$("form").find("input") -> works
$("form").find("input[type=submit]") -> undefined is not a function

这里发生了什么,我该如何解决这个问题?

我从1.9升级后使用jQuery 1.11,希望能解决问题。页面上还有Angular,我会在加载完所有内容后从控制台调用此代码。

我的表单,以防万一你需要它,如下 [EDIT] 更新,以显示Angular类和指令的实际HTML输出:

<form ng-submit="saveContact($event, '/applicants/update_contact?id=1593')" class="ng-pristine ng-valid" _lpchecked="1" id="frmContact">
   <h4 class="section-header">Applicant Contact Information</h4>

   <field id="email" type="text" model="applicant.email" label="Email address" class="ng-isolate-scope">
     <div ng-class="['field', isRequired()]" class="field"> <!-- Text/File/Password Field -->
        <label ng-bind="label" class="ng-binding">Email address</label>
        <input type="text" ng-model="model" class="ng-pristine ng-valid">
      </div>
   </field>


  <div class="field">
     <input type="submit" value="Save" class="btn secondary">
  </div>
</form>

我的JavaScript库按以下顺序加载:

  1. jQuery 11
  2. jQuery UI
  3. 我的app.js
  4. 脚本加载在页面底部。

2 个答案:

答案 0 :(得分:0)

AngularJS附带JQLite,这是一个轻量级的jQuery verison,它是你在这里使用的那个,它给你意想不到的结果。

为了使Angular能够与完整的jQuery一起使用,您需要确保在 Angular 之前加载jQuery 。请注意<script>代码订单。

答案 1 :(得分:0)

事实证明,将刀握在我喉咙的手是我自己的。

在应用程序开发的早期阶段,通过执行ObjectObject.prototype.findId = function() { ... }原型上添加几个辅助方法很有用。当尝试在jQuery中执行find()方法时,这会引发各种各样的地狱。

我把它修好了:

Object.prototype.myMethod = function() { ... }

进入这个

var specialObject = function(object) {
   return {  
     myMethod: function() { ... }
   }
}

我没有意识到我之前的做法是如此糟糕,直到我读到这个:Extending Object.prototype JavaScript

谢谢大家的帮助,伙计们。