Ali*_*mii 5 jquery-plugins typeerror jquery-selectors joomla3.0
我正在尝试实现一个jQuery插件.代码可以在jsFiddle上找到.http://jsfiddle.net/MKL4g/1/但我也在下面复制了我的修改.
var postsArr = new Array(),
$postsList = $('div.cat-children ul');
//Create array of all posts in lists
$postsList.find('li').each(function(){
postsArr.push($(this).html());
})
//Split the array at this point. The original array is altered.
var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
secondList = postsArr,
ListHTML = '';
function createHTML(list){
ListHTML = '';
for (var i = 0; i < list.length; i++) {
ListHTML += '<li>' + list[i] + '</li>'
};
}
//Generate HTML for first list
createHTML(firstList);
$postsList.html(ListHTML);
//Generate HTML for second list
createHTML(secondList);
//Create new list after original one
$postsList.after('<ul class="cat-list"></ul>').next().html(ListHTML);
Run Code Online (Sandbox Code Playgroud)
我正在使用Gantry 4.1.5 Framework在Joomla 3.0.2站点上实现它.
用于设置生成的UL LI数组样式的CSS如下(LESS格式):
body {
&.menu-face-à-la-crise,
&.menu-divorce-séparation,
&.menu-études-de-cas,
&.menu-effets-de-la-vie-séparée,
&.menu-effets-du-divorce,
&.menu-effets-communs,
&.menu-situations-particulières,
&.menu-formulaires-modèles,
&.menu-suppléments-addendas,
&.menu-à-propos-de-nous {
div#rt-mainbody-surround {
margin-top: -1px;
background: @whitebrown;
}
div.component-content {
.blog {
li {
text-align: center;
font-family: @headingFontFamily;
font-weight: 700;
font-size: 2.0em;
line-height: 1.5em;
text-shadow: 1px 1px 1px rgba(0,0,0,0.3);
}
div.cat-children {
ul {
float: left;
padding: 10px;
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到以下错误:
TypeError:'null'不是对象(评估'$ postsList.find')
你可以在这里看到实现:
http://gobet.ergonomiq.net/études-de-cas/effets-du-divorce
如您所见,它似乎没有采用列表项并将它们分成两列.
生成的显示应该将列表拆分为两列,并使列表项在视觉上以列为中心.
有人可以建议如何调试和解决这个问题?
您已启用 MooTools,并且位于脚本的开头。翻转它以便您使用 jQuery 选择器。
var postsArr = [],
$postsList = jQuery('.cat-children ul');
//Create array of all posts in lists
$postsList.find('li').each(function(){
postsArr.push(jQuery(this).html());
})
//Split the array at this point. The original array is altered.
var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
secondList = postsArr,
ListHTML = '';
function createHTML(list){
ListHTML = '';
for (var i = 0; i < list.length; i++) {
ListHTML += '<li>' + list[i] + '</li>'
};
}
//Generate HTML for first list
createHTML(firstList);
$postsList.html(ListHTML);
//Generate HTML for second list
createHTML(secondList);
//Create new list after original one
$postsList.after('<ul class="cat-list"></ul>').next().html(ListHTML);
Run Code Online (Sandbox Code Playgroud)
编辑新请求
(function updateColumns($){
var postsArr = [],
$postsList = $('.cat-children ul'),
$parent = $postsList.parent();
//Create array of all posts in lists
$postsList.find('li').each(function(){
postsArr.push(jQuery(this).html());
})
//Split the array at this point. The original array is altered.
var firstList = postsArr.splice(0, Math.round(postsArr.length / 2)),
secondList = postsArr,
// ListHTML = '', <-- not needed
$insertWrapper = $('<div>').addClass('cat-children');
function createHTML(list){
var $ul = $('<ul>').addClass('cat-list');
for (var i = 0; i < list.length; i++) {
$ul.append( $('<li>').html( $(list[i]).html() ) );
};
var $wrappedDiv = $('<div>').addClass('gantry-width-50 cat-columns').append( $ul )
return $wrappedDiv;
}
//Generate HTML for first list
$insertWrapper.append( createHTML(firstList) );
$insertWrapper.append( createHTML(secondList) );
$postsList.replaceWith( $insertWrapper );
})(window.jQuery);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |