从jquery插件调用该对象时出错

时间:2013-06-24 09:53:46

标签: jquery

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元素。

为什么它不能正常工作?

2 个答案:

答案 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()作为直接后代。