使用 jquery 更改部分链接
Change part of link with jquery
我正在使用Ransack进行排序。当搜索和排序仅使用 ajax 时,我找不到更改排序链接的方法。所以我正在开发自己的解决方案来更改链接和其他一些东西。
到目前为止,我有这个
红宝石
<%= search_form_for @search, :class=>"search",:id=>"search-menio",:remote=>"true", url: advertisements_path, :method => :get do |f| %>
<div class="sort-link-css">
<%= sort_link(@search, :price,"CENA", {},{ :remote => true, :method => :get }) %>
</div>
<%end%>
生成这个:
<div class="sort-link-css">
<a class="sort_link asc" data-method="get" data-remote="true" href="/lv/advertisements?q%5Bs%5D=price+desc">CENA ▲</a>
</div>
我的目标:
当用户单击此链接时,它将更改表示排序顺序的链接类和也表示排序顺序的链接结束。
asc -> desc
desc -> asc
然后它提交搜索表单。
问题:第一次单击时,我看到一些闪烁和更改,但是当我尝试第二次单击时,没有任何反应。
我的脚本:
$('.sort-link-css > a').click(function() {
var className = $(this).attr('class');
if (className = "sort link asc") {
$(this).removeClass('sort link asc');
this.href = this.href.replace('desc', 'asc');
$(this).attr('class', 'sort link desc');
} else if (className = "sort link desc") {
$(this).removeClass('sort link desc');
this.href = this.href.replace('asc', 'desc');
$(this).attr('class', 'sort link asc');
}
$('.search').submit();
})
我做错了什么?
理想情况下,您可以使用jQuery.hasClass
或jQuery.is
来确定元素是否具有指定的一个或多个类。
您还需要在导航或提交表单之前更新显示。您可以执行所有这些操作:
$('.sort-link-css > a').click(function(e) {
// cancel the click event on the link
e.preventDefault();
var $this = $(this);
if ($this.is('.asc')) {
this.href = this.href.replace('desc', 'asc');
} else if ($this.is('.desc')) {
this.href = this.href.replace('asc', 'desc');
}
$this.toggleClass('asc desc');
setTimeout(function() {
// I am not sure if you want to load the link href
// or submit the form; use one of the following
window.location = $this.get(0).href;
$('.search').submit();
}, 100);
});
请尝试使用 hasClass()。
https://api.jquery.com/hasclass/
$(this).hasClass( "sort link asc" )
好的,
你的jQuery中有很多错误。你class="sort_link asc"
实际上是两个类,而不是三个类。我做了一个小提琴,只要试着理解它,你就会明白你哪里出错了:小提琴
$('.sort-link-css > a').click(function () {
var className = $(this).attr('class');
console.log(className);
if (className == "sort_link asc") {
$(this).removeClass('sort_link asc');
alert("removed class sort_link asc");
} else if (className == "sort_link desc") {
$(this).removeClass('sort link desc');
this.href = this.href.replace('asc', 'desc');
$(this).attr('class', 'sort link asc');
}
else {
alert("all tests failed");
}
})
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 单击页面上的链接后高度发生变化
- 将纯文本URL转换为可单击链接
- python-selenium-点击上升链接
- 一点javascript元编程&可链接的设置器
- ng视图外的链接重定向到ng视图内的页面
- 如何调用“;链接_;在onclick事件上使用Javascript
- 链接所有<a>Meteor
- 如何在Angular中的表的所有单元格中添加链接
- 通过链接重定向不;我不在jstree中工作
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 这个promise嵌套可以改为链接吗
- 平滑滚动链接与/ fancybox冲突,将href改为class或id