2013-08-06 3 views
1

Я новичок в jquery и немного смущен тем, как присоединить функцию щелчка к классу ссылок.Присоединить функцию JQuery для ссылки на класс

Первоначально я подключил функцию OnClick к идентификатору ссылки себя следующим образом:

<div class="summary" style="display:none"></div> 
<a id="moreAbout" href="#" >More about #{machine.client_name}</a> 

<script> 
    "#moreAbout".onClick(function(event) { 
    event.stop(); 
    $$('.summary')[0].slide(); 
    $$('.summary')[0].load("/machine"); 
    }); 
</script> 

и функциональность работала просто отлично. (В принципе, есть ссылка, которую вы нажимаете, чтобы показать и скрыть div)

Теперь мне нужно прикрепить одну и ту же функцию к нескольким ссылкам. Я пробовал каждый совет, который я могу найти, и я думаю, что может возникнуть проблема с привязкой функциональности к классу ссылок.

Самым популярным решением я нашел следующее:

<div class="summary" style="display:none"></div> 
<a class="moreAbout" id="alink" "href="#" >More about #{machine.client_name}</a> 

<script> 
    $('a.moreAbout').click(function(event) { 
    event.stop(); 
    $$('.summary')[0].slide(); 
    $$('.summary')[0].load("/machine"); 
    }); 
</script> 

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

Любое понимание того, почему это может не работать?

ответ

1

Использование индекса с обращенным, что в DOM объект

slide и load методы, доступные на JQuery объекты. Поэтому вам нужно снова преобразовать DOM в jQueryObject, чтобы заставить его работать.

Также достаточно только одного $.

$($('.summary')[0]) -> Нужно снова преобразовать объект JQuery

Код

$('a.moreAbout').click(function(event) { 
    event.preventDefault(); 
    var $summary = $($('.summary')[0]); 
    // The DOM object again converted to jQuery object and stored in 
    // $summary variable. 
    // Now you can apply jQuery method for this object 

    $summary.slide(); 
    $summary.load("/machine"); 
}); 
+0

Спасибо так много! Все, что мне нужно было сделать, это сменить слайд() на slideDown(), и он отлично сработал! Я ценю помощь –

+0

@ KaitlynDornbier .. Рад помочь ... –

0

Попробуйте следующее:

<script> 
$(document).ready(function(){ //this makes sure the dom is loaded 
    $('a.moreAbout').click(function(event) { 
    event.preventDefault(); //prevent the default action 
    $(this).prev('.summary').slideDown(); //only one $ needed, get the prev parent, 
     //slide is not an event, use slideDown() 
    $(this).prev('.summary').load("/machine"); 
    }); 
}); 
</script> 
+0

Это решение также работало, но для меня было немного сложнее понять, просто с аннотацией $ (this) .prev. Кончик slideDown() был потрясающим, хотя! –

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