从jquery插件调用对象时出错

从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( {},

})

在hidded方法内部,
$(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();