2012-01-04 2 views
2

Что я делаю неправильно? Я пытаюсь назначить .data() каждому якорю. Теперь скрипт удаляет только заголовок, но ничего не хранит в data(). Когда я попробовал console.log(title), он написал название отлично, но не сохранил его. Я использую JQuery 1.7.1Coffeescript jQuery заданные данные()

У меня есть следующие строки в кофе

$(document).ready -> 
    initBubble(); 

initBubble = -> 
    $('a[title]').each (index, element) => 
     setInfoAttr($(element)) 

setInfoAttr = (element) -> 
    title = element.attr('title') 
    element.data('info', title).removeAttr('title') 

Составленный выход следующим

(function() { 
    var initBubble, setInfoAttr; 

    $(document).ready(function() { 
    return initBubble(); 
    }); 

    initBubble = function() { 
    var _this = this; 
    return $('a[title]').each(function(index, element) { 
     return setInfoAttr($(element)); 
    }); 
    }; 

    setInfoAttr = function(element) { 
    var title; 
    title = element.attr('title'); 
    return element.data('info', title).removeAttr('title'); 
    }; 

}).call(this); 
+0

Похоже, что он отлично работает ... Как вы тестируете, чтобы убедиться, что данные установлены? –

+0

Я попробовал 'console.log'. По-видимому, это не сработало из-за порядка функций (что странно). Спасибо, в любом случае! – mreq

ответ

2

Может перетасовать вещи вокруг немного. Единственное, что я вижу, это то, что функция initBubble может быть неопределенной при ее вызове.

initBubble = -> 
    $('a[title]').each (index, element) => 
     setInfoAttr $(element) 

setInfoAttr = (element) -> 
    title = element.attr('title') 
    element.data('info', title).removeAttr('title') 

// A little shorcut for $(document).ready 
$ -> 
    initBubble() 
+0

да что работает, спасибо! функция была определена отлично, но атрибуты данных были в каком-то беспорядок '$ ->' производит '$ (function() {', это то же самое, что '$ (document) .ready (function() {'? – mreq

+0

да нашел это @ http://api.jquery.com/jQuery/, nvm – mreq