Javascript 将DOM元素传递给jQuery自定义插件
我在将DOM元素传递到自定义插件中的函数时遇到问题。如你所见,我称之为Javascript 将DOM元素传递给jQuery自定义插件,javascript,jquery,Javascript,Jquery,我在将DOM元素传递到自定义插件中的函数时遇到问题。如你所见,我称之为eHeight(this)。滚动()函数,我收到以下错误: 未捕获的TypeError:无法读取未定义的属性“attr” 然后我将this更改为eHeight(elem)而这一次我得到了以下错误: 未捕获引用错误:未定义元素 如何将所选元素传递给eHeight() (函数($){ $.fn.boxHeight=功能(选项){ 变量设置=$.extend({ elemHeight:null },选项); var start=0
eHeight(this)在$(窗口)中的code>。滚动()代码>函数,我收到以下错误:
未捕获的TypeError:无法读取未定义的属性“attr”
然后我将this
更改为eHeight(elem)代码>而这一次我得到了以下错误:
未捕获引用错误:未定义元素
如何将所选元素传递给eHeight()
(函数($){
$.fn.boxHeight=功能(选项){
变量设置=$.extend({
elemHeight:null
},选项);
var start=0;
$(窗口)。滚动(功能(事件){
var st=$(this.scrollTop();
如果(st>开始){
eHeight(这个);
}
开始=st;
});
函数eHeight(){
var elem=$.trim(elem.attr('id'));
elem=“#”+elem;
var theHeight=$(elem).height();
if($.isFunction(options.elemHeight)){
options.elemHeight.call();
}
options.elemHeight.call();
}
};
})(jQuery);
$('#c')。箱高({
elemHeight:function(){
$('#result').html('高度为:');
}
});代码>
div{
高度:600px;
宽度:100%;
}
#c{
背景颜色:卡其色;
}
#结果{
位置:固定;
右:0;
排名:0;
背景:黄色;
高度:40px;
宽度:220px;
}
A.
B
C
D
E
F
定义一个变量,引用插件中的此元素,并在elemHeight
处指定参数,将引用传递给elemHeight
<代码>$.trim()
和call。call()
调用不是必需的
(函数($){
$.fn.boxHeight=功能(选项){
var elem=这个;
变量设置=$.extend({
elemHeight:null
},选项);
var start=0;
$(窗口)。滚动(功能(事件){
var st=$(this.scrollTop();
如果(st>开始){
eHeight(elem);
}
开始=st;
});
函数eHeight(elem){
var theHeight=elem.height();
if($.isFunction(options.elemHeight)){
选项。元素高度(高度);
}
}
};
})(jQuery);
$('#c')。箱高({
元素高度:功能(高度){
$('#result').html('高度为:'+高度);
}
});代码>
div{
高度:600px;
宽度:100%;
}
#c{
背景颜色:卡其色;
}
#结果{
位置:固定;
右:0;
排名:0;
背景:黄色;
高度:40px;
宽度:220px;
}
A.
B
C
D
E
F
该语句var elem=$.trim(elem.attr('id'))代码>毫无意义:)在哪里定义了elem
eHeight
不需要参数。@guest271314,正如您所见,我试图在eHeigh()函数中定义它。我还尝试在设置之前在插件顶部定义它,但仍然得到相同的错误您是否希望elem
成为插件链接到的元素?谢谢guest271314,但是我们如何准确地选择元素?我的意思是,我认为我们必须按类或属性选择元素,这就是为什么我使用'var elem=$.trim(elem.attr('id'));`显然,您只是传递了元素,而没有任何这些属性!