从jquery插件调用对象时出错
}) 在hidded方法内部,从jquery插件调用对象时出错,jquery,Jquery,}) 在hidded方法内部,$(self.elem+'dd').hide()会给出错误,它仅在我只放置$('dd').hide()时才有效,但我不希望这样,因为它会选择页面上的所有dd元素 为什么它不能正常工作?您应该使用.find()方法,因为您的选择器无效: var accordion = { init: function(options, elem) { var self = this; self.elem = elem; self.options = $.extend( {},
$(self.elem+'dd').hide()如果存在self.elem
,则code>会给出错误,它仅在我只放置$('dd').hide()
时才有效,但我不希望这样,因为它会选择页面上的所有dd元素
为什么它不能正常工作?您应该使用.find()
方法,因为您的选择器无效:
var accordion = {
init: function(options, elem) {
var self = this;
self.elem = elem;
self.options = $.extend( {}, $.fn.accordion.options, options );
// call methods
self.hideDD();
},
hideDD: function() {
var self = this;
$(self.elem + ' dd').hide();
}
当您使用$(self.elem+'dd')
时,您基本上想要:$($(self.elem).selector+'dd')
,但这是错误的,因为您在jquery对象中包装了两次元素,顺便说一句,jquery对象的selector属性不推荐使用。所以这里最简单的解决方案是搜索self.element的后代,然后可以使用.find()
方法或其他方法作为直接后代的.children()
。self.elem+'dd'
正在构造字符串。我不认为self.elem
包含字符串;它包含一个对象。因此,字符串连接的结果就像“[object-object]dd”
一样愚蠢
因此,请尝试只搜索DOM对象的子对象:
$(self.elem).find('dd').hide();
self.elem
是一个字符串吗?你检查过self
实际指向什么了吗?不是这样!虽然你的语法有错误。应该是$(self.elem.find('dd').hide();谢谢
$(self.elem).find('dd').hide();