将参数传递给函数 onclick jQuery
Pass parameter to function onclick jQuery
我正在尝试使用 jquery 从 URL 中删除参数。实际上参数必须动态传递,并且应该是点击时 parent 元素的文本。然后在为其添加前缀后,我需要将其传递给函数。
如下图所示,当有人点击清除 link 时,它会从其标题标题中获取过滤器名称,即 COLOR,在添加一些前缀之后,比如说js_,然后把这个js_color传给function.
到目前为止,我已经做了类似的事情,但似乎没有用。你能帮帮我吗
谢谢
编辑:
如果我手动传递参数值,它工作正常。
工作:removeParam("js_color", url)
不工作: removeParam(param, url)
Fiddle: https://jsfiddle.net/jz1dyh9r/
函数未获取第一个参数的值。
// Append Clear Link to element
$('.woof_redraw_zone .woof_container_inner h4').each(function(){
$(this).append('<a class="clear_filters">Clear</a>');
});
// Extract parameter, pass it to function and generate new URL
$('.woof_redraw_zone .woof_container_inner h4').click(function(){
var url = window.location.href;
var prefix = ("pa_");
var key = $(this).clone().children().remove().end().text().toLowerCase();
var param = prefix + key;
var alteredURL = removeParam(param, url);
console.log( removeParam(param, url) );
// window.location.href = alteredURL;
});
//参考:Remove a parameter to the URL with JavaScript
function removeParam(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}
您要比较的字符串可能有空格和换行符,在比较它们之前在字符串上使用 trim()
function removeParam(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param.trim() === key.trim()) { // compare trimmed strings
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}
我正在尝试使用 jquery 从 URL 中删除参数。实际上参数必须动态传递,并且应该是点击时 parent 元素的文本。然后在为其添加前缀后,我需要将其传递给函数。
如下图所示,当有人点击清除 link 时,它会从其标题标题中获取过滤器名称,即 COLOR,在添加一些前缀之后,比如说js_,然后把这个js_color传给function.
到目前为止,我已经做了类似的事情,但似乎没有用。你能帮帮我吗
谢谢
编辑:
如果我手动传递参数值,它工作正常。
工作:removeParam("js_color", url)
不工作: removeParam(param, url)
Fiddle: https://jsfiddle.net/jz1dyh9r/
函数未获取第一个参数的值。
// Append Clear Link to element
$('.woof_redraw_zone .woof_container_inner h4').each(function(){
$(this).append('<a class="clear_filters">Clear</a>');
});
// Extract parameter, pass it to function and generate new URL
$('.woof_redraw_zone .woof_container_inner h4').click(function(){
var url = window.location.href;
var prefix = ("pa_");
var key = $(this).clone().children().remove().end().text().toLowerCase();
var param = prefix + key;
var alteredURL = removeParam(param, url);
console.log( removeParam(param, url) );
// window.location.href = alteredURL;
});
//参考:Remove a parameter to the URL with JavaScript
function removeParam(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}
您要比较的字符串可能有空格和换行符,在比较它们之前在字符串上使用 trim()
function removeParam(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param.trim() === key.trim()) { // compare trimmed strings
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}