Javascript 将jQuery与Ember操作处理程序一起使用

Javascript 将jQuery与Ember操作处理程序一起使用,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我试图从ember controller中的操作处理程序中访问jquery对象($)。但是它说,$是未定义的 如何从操作处理程序访问jQuery对象? 以这个应用程序为例: <div id="main"></div> <script type="text/x-handlebars" data-template-name="index"> <div id="scroll-div"> <h1>Test Div<

我试图从ember controller中的操作处理程序中访问jquery对象($)。但是它说,
$
是未定义的

如何从操作处理程序访问jQuery对象?

以这个应用程序为例:

<div id="main"></div>

<script type="text/x-handlebars" data-template-name="index">
    <div id="scroll-div">
        <h1>Test Div</h1>

    </div>
    <a href="" {{action "findHeight"}}>Find height</a>
</script>

JS fiddle:

我想你需要改变:

findHeight: function(){
   console.log(this.$('#scroll-div').height);
}
关于这一点:

findHeight: function(){
   console.log($('#scroll-div').height());
}


在这一行
console.log(this.$('#scroll div').height)
在代码中
$(“#scroll div”)。height
这里
scroll div
是一个id,它的长度应该只有一个,因为每个元素的id应该是唯一的,要获得该div的高度,应该使用
.height()
不仅仅是
.height

首先,不建议在控制器中执行dom操作。更好的方法是设置target=“view”并在那里处理此操作。那么您的代码内部操作将正常工作。如果您想在控制器本身中处理它,请使用此代码段

App.IndexController = Ember.ArrayController.extend({
    actions: {
        findHeight: function(){
            alert($('#scroll-div').height());
        }
    }
});

$未定义
表示没有引用jquery库。由于
$
jQuery
的别名。您是否尝试使用“jQuery”而不是“$”?因此,我猜jQuery对象没有通过
this
传递给操作处理程序,就像我们在
didinserelement
@Sisir是的,我猜
this
引用dom节点,而
$(“#滚动div”)
是一个jquery对象,因此可能会导致一些问题。我没有在余烬js上工作过。
App.IndexController = Ember.ArrayController.extend({
    actions: {
        findHeight: function(){
            alert($('#scroll-div').height());
        }
    }
});