#jquery #ruby-on-rails #css #ruby-on-rails-3
#jquery #ruby-on-rails #css #ruby-on-rails-3
Вопрос:
я только что изменил свои взгляды с помощью AJAX, но теперь я в тупике, как сделать так, чтобы запрашиваемое действие имело параметр css:focus type, чтобы, когда пользователь выбирает «About» и _about частичная загрузка, у меня может быть ссылка «About» со стилем, чтобы показать, что этоО странице. Большое спасибо!
Ответ №1:
Установите класс для нажатой ссылки, удалив этот же класс из всех других ссылок. Например:
$('a.tab_link').click(function(){
$('a.tab_link').removeClass('active')
$(this).addClass('active')
})
// CSS
a.tab_link.active {
color: red;
}
Комментарии:
1. выглядит хорошо! значит, это будет применяться только к ссылкам, к которым я добавляю class=»tab_link»? что означает $(this) ? Спасибо
2. Да.
$(this)
возвращает объект jQuery для ссылки, на которую был нажат.3. Привет, кажется, я не могу заставить это работать. Не могли бы вы включить jsfiddle, чтобы я мог его увидеть? Большое спасибо.
Ответ №2:
у вас может быть такой помощник в вашем application_helper.rb
def nav_link(name, url)
selected = url.all? { |key, value| params[key] == value }
link_to(name, url, :class => (selected ? "youarehere tabs" : "tabs"))
end
тогда, по вашему мнению, вы можете иметь
<div id="menu-header">
<div class="subheader answers-subheader">
<div id="tabs" class="tabs2">
<%= nav_link "example", :view => nil %>
<%= nav_link "example1", :view => "example1"%>
<%= nav_link "example2", :view => "example2" %>
</div>
</div>
</div>
<div id="menu-items">
<%= %w[example example1 example2 ].include?(params[:view]) ? render(params[:view]) : render("example") %>
</div>
затем в вашем приложении.js, который вы можете иметь
$(function() {
$(".tabs2 .tabs").click(function(e) {
$("#tabs .tabs").removeClass("youarehere");
$(this).addClass("youarehere");
$("#menu-items").append('<div class="progress"><img src="/assets/loading.gif" width="32" height="32" alt="" /></div>');
$.getScript(this.href);
if (history amp;amp; history.replaceState) {
history.replaceState(null, document.title, this.href);
}
e.preventDefault();
});
});
я надеюсь, что это поможет