2012-06-02 4 views
1

Используя jQuery и coffeescript, я хочу обновить элемент html при нажатии пользователем. Мой код выглядит так:jQuery/Coffeescript - if conditional

$ -> 
    $('p span').live 'keypress', (e) ->  
    if e.keyCode == 13   
     $('div.sidebar-nav ul li a.active').html $(this).attr 'value' 

Coffeescript компилируется без ошибок, но код не работает. По какой-то причине, если я добавляю изменить код на следующие его работы:

$ -> 
    $('p span').live 'keypress', (e) ->  
    if e.keyCode == 13 
     alert 'some string' 
     $('.sidebar-nav a.active').html $(this).attr 'value' 

Я провожу последние несколько часов, пытаясь не решить эту и все еще ничего. Любая помощь будет глубоко оценена.

+1

Святое дерьмо, что такое '$ ->' в coffeescript? – gdoron

+2

@gdoron: Как и в JavaScript, '$' - это просто функция. '->' вводит анонимную функцию. CoffeeScript также добавляет функции вызова без круглых скобок. Поместите кусочки вместе, и вы получите '$ (function() {/ * ... * /});' – icktoofay

+0

@icktoofay. И где скобки в .html $ (this) .attr 'value'' ???? – gdoron

ответ

3
$('.sidebar-nav a.active') 

отличается ...

$('div.sidebar-nav ul li a.active') 

в первом случае, a.active является потомком .sidebar-nav, а структура под .sidebar-nav может быть что угодно (список, статьи, пролеты, шатры, Безразлично не имеет значения, до тех пор, пока его там где-то). Во-вторых, это правнук в списке. Нам нужно, чтобы ваш HTML был уверен, но он выглядит как плохие селекторы ...

+0

@icktoofay да Я не уверен, что мой мыслительный процесс был там ... –

+0

Вы правы, плохие селекторы. Спасибо за вашу помощь. –

Смежные вопросы