I’m trying to get wookmarks to work on a section of a page for product display. I have loaded wookmarks and loadedimages via wp_enqueue_script. They are included in the header source so they appear to be loaded fine. However, I’m getting an error in firebug that I haven’t been able to sort out. The code is taken from an example file from wookmarks.
TypeError: handler.wookmark is not a function
page.php
<div id="products" class="fp-sec">
<h2>Products</h2>
<ul id="prod-list" >
<?php $products = new WP_Query( 'category_name=products' ); ?>
<?php if ( $products->have_posts() ) : while ( $products->have_posts() ) : $products->the_post(); ?>
<li <?php post_class('fp-prod') ?> id="post-<?php the_ID(); ?>">
<?php the_post_thumbnail('full'); ?>
<p class="prod-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
</li>
<?php endwhile; endif;?>
</ul>
</div>
<script type="text/javascript">
jQuery(document).ready(function ($) {
var loadedImages = 0, // Counter for loaded images
handler = $('#prod-list li'); // Get a reference to your grid items.
// Prepare layout options.
var options = {
autoResize: true, // This will auto-update the layout when the browser window is resized.
container: $('#prod-list'), // Optional, used for some extra CSS styling
offset: 5, // Optional, the distance between grid items
outerOffset: 10, // Optional, the distance to the containers border
itemWidth: 210 // Optional, the width of a grid item
};
$('#prod-list').imagesLoaded(function() {
// Call the layout function.
handler.wookmark(options);
// Capture clicks on grid items.
handler.click(function(){
// Randomize the height of the clicked item.
var newHeight = $('img', this).height() + Math.round(Math.random() * 300 + 30);
$(this).css('height', newHeight+'px');
// Update the layout.
handler.wookmark();
});
}).progress(function(instance, image) {
// Update progress bar after each image load
loadedImages++;
if (loadedImages == handler.length)
$('.progress-bar').hide();
else
$('.progress-bar').width((loadedImages / handler.length * 100) + '%');
});
});
</script>
style.css
#prod-list {
list-style: none;
margin: 0;
padding: 0;
position: relative;
width: 100%;
}
#prod-list li {
width: 200px;
border-left: 1px dashed #bfbfbf;
border-top: 1px dashed #bfbfbf;
-webkit-box-shadow: 2px 3px 3px 0px rgba(105,105,105,1);
-moz-box-shadow: 2px 3px 3px 0px rgba(105,105,105,1);
box-shadow: 2px 3px 3px 0px rgba(105,105,105,1);
cursor: pointer;
padding: 4px;
}
#prod-list li img {
display: block;
max-width: 100%;
height: auto;
}
.prod-title {
font-size: 1.2em;
width: auto;
color: #ffffff;
padding: 0px;
bottom: 0px ;
right: 0px;
}
It looks like this line:
Should be(the immediate parent of the actual grid items):
Then this line:
Would be(…again its immediate parent):
Referencing the grid items causes directly causes this error.