我创建了自己的测试,并意识到问题出在插件的编写方式上,即它只接受一个类名值,否则它将中断。
这是因为脚本中的以下行:
className = '.'+$(this).prop('class');
它的作用是获取class
元素的属性并.
在前面添加一个点 ( );获取当前选择器的一种很好但不是非常可扩展的方式,因为如果您有多个类名,它只会在第一个类名前放一个点,所以如果您有...
<div class="profile-panel profile-panel-1st-row profile-panel1">
……它会变成……
$('.profile-panel profile-panel-1st-row profile-panel1')
...所以可以理解,这将无法正常工作,因为其他类都缺少点。
为了解决这个问题,直到 1.7 版本,jQuery 有一个.selector属性,但是现在已经被弃用了。相反,他们现在建议将选择器添加为插件函数的参数,如下所示(我根据您的情况对其进行了定制):
首先定义一个selector
调用函数时调用的选项:
$('.profile-panel-1st-row').equalHeights({
selector:'.profile-panel-1st-row',
// ...
});
然后className
在插件中设置变量如下:
var className = options.selector;
您可以做的另一件事是将您用来激活插件的类作为您要使用它的每个元素的第一个类,所以而不是...
<div class="profile-panel profile-panel-1st-row profile-panel1">
...做这个...
<div class="profile-panel-1st-row profile-panel profile-panel1">
...然后您可以className
在插件中设置变量,如下所示:
var className = '.'+ $(this).prop('class').split(" ").slice(0,1);
这基本上将类名分成按空格划分的部分并取第一个。
要充分利用这两种解决方案,只需设置className
以下内容:
var className = options.selector || '.'+ $(this).prop('class').split(" ").slice(0,1);
至于动画,它只适用于resize;这是有意的,这就是插件的构建方式,您可以使用我添加到 jsfiddle 的插件创建者的原始示例:http: //jsfiddle.net/o9rjvq8j/1/
编辑#2:如果您愿意更多地更改插件,只需$(window).resize(function()
在if(settings.responsive === true)
检查中删除,您就可以使用它。;)
if(settings.responsive === true) {
//reset height to auto
$(className).css("height","auto");
//re initialise
reInit();
}