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();
}
};
在hideDD方法中,如果$(self.elem + ' dd').hide();
存在,则self.elem
会出错,只有在我放$('dd').hide()
但我不想要它时才会有效,因为它会选择页面上的所有DD元素。
为什么它不能正常工作?
答案 0 :(得分:2)
self.elem + ' dd'
正在构建一个字符串。我认为self.elem
不包含字符串;它包含一个对象。那么,字符串连接的结果就像"[object Object] dd"
一样美味愚蠢。
因此,请尝试此操作,仅搜索DOM对象的子项:
$(self.elem).find('dd').hide();
答案 1 :(得分:0)
您应该使用.find()
方法,因为您的选择器无效:
$(self.elem).find('dd').hide();
当您使用$(self.elem + ' dd')
时,您基本上需要:$($(self.elem).selector + ' dd')
但这是错误的,因为您在jquery对象和BTW中包装了两个元素,不推荐使用jquery对象的selector属性。这里最简单的解决方案是搜索self.element的后代,然后您可以使用.find()
方法或其他方法.children()
作为直接后代。