3

I have running to the exception of "Uncaught TypeError: Object # has no method 'quicksand'", and I can't seem to find where the error is coming from. I am very new to jQuery and Java Script, and not sure what is wrong.

I am trying the implement the example here: http://www.evoluted.net/thinktank/web-development/jquery-quicksand-tutorial-filtering

I took that code, and I ran the the index file, and I can see it working fine, so I just copied the list over and took his main.js content and combine with the one I already have to get this function:

$(document).ready(function () { 
$("#myController").jFlow({ controller: ".jFlowControl", slideWrapper: "#jFlowSlider", slides: "#mySlides", selectedWrapper: "jFlowSelected", width: "960px", height: "350px", duration: 400, prev: ".jFlowPrev", next: ".jFlowNext", auto: true }); 
$().UItoTop({ easingType: 'easeOutQuart' }); jQuery("a[data-gal^='prettyPhoto']").prettyPhoto({ social_tools: false });
 // get the action filter option item on page load
  var $filterType = $('#filterOptions li.active a').attr('class');
  // get and assign the ourHolder element to the
    // $holder varible for use later
  var $dataholder = $('ul.ourHolder');

  // clone all items within the pre-assigned $holder element
  var $data = $dataholder.clone();

  // attempt to call Quicksand when a filter option
    // item is clicked
    $('#filterOptions li a').click(function(e) {
        // reset the active class on all the buttons
        $('#filterOptions li').removeClass('active');

        // assign the class of the clicked filter option
        // element to our $filterType variable
        var $filterType = $(this).attr('class');
        $(this).parent().addClass('active');

        if ($filterType == 'all') {
            // assign all li items to the $filteredData var when
            // the 'All' filter option is clicked
            var $filteredData = $data.find('li');
        } 
        else {
            // find all li elements that have our required $filterType
            // values for the data-type element
            var $filteredData = $data.find('li[data-type=' + $filterType + ']');
        }

        // call quicksand and assign transition parameters
        $dataholder.quicksand($filteredData, {
            duration: 800,
            easing: 'easeInOutQuad',
            attribute: "data-id",
        });
        return false;
    });
    }
);

" But I get an error at : "$dataholder.quicksand($filteredData,duration: 800,easing: 'easeInOutQuad'}); "

Any idea what needs to be done?


I'm not exactly sure why this is happining, because if you open the link in a new tab, it works perfectly. It's possible that it's a css problem, but more likely, it has to do with your HTML.

What I would try is adding a target to your link. This will tell it to open the link specifically in the window your in, which may solve the problem. (I haven't tested it myself though)

Instead of

<a href="/townsend/employers/"></a>

Try changing it to one of the following:

<a href="/townsend/employers/" target="_parent"></a>

Or, if that one doesn't work, try this one as well

<a href="/townsend/employers/" target="_self"></a>

Let me know if that helps!

4

1 に答える 1

4

jQuery の 2 番目のコピーを含めると、前のコピーとそのすべてのプラグインがオーバーライドされます。それらのいずれかを削除すると、問題が解決します。

于 2012-04-26T19:08:00.707 に答える