版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/48683873
通常情况下,a标签的href属性只能通过?name=xiaofang&age=10
这种形式添加请求参数,这在某种场景下并不能满足我们的需求,我们需要a标签的参数更能向form表单一样自如。
代码
我们为其增加一个data属性,其data值指定为某一个元素id集合。
<a href="${ctx}/project/initPublishProduct?callbackType=forward&tabIndex=1" target="ajaxTodo" data="tabIndex" callback="ajaxDone" style="width: 100px;" class="btn btn-default">下一步</a>
<input type="hidden" id="tabIndex" value="${tabIndex}">
$.fn.extend({
ajaxTodo : function() {
return this.each(function() {
var $this = $(this);
$this.click(function(event) {
var url = unescape($this.attr("href")).replaceTmById($(event.target).parents(".unitBox:first"));
YUNM.debug(url);
if (!url.isFinishedTm()) {
$.showErr($this.attr("warn"));
return false;
}
var dataId = $this.attr("data");
if (dataId) {
if (dataId.indexOf(",") != -1) {
$.each(dataId.split(","), function(index, id){
if ($("#" + id) && $("#" + id).val()) {
addMoreParamForUrl(url, id, $("#" + id).val());
}
});
} else {
if ($("#" + dataId) && $("#" + dataId).val()) {
addMoreParamForUrl(url, dataId, $("#" + dataId).val());
}
}
}
var title = $this.attr("atitle");
if (title) {
$.showConfirm(title, function() {
ajaxTodo(url, $this.attr("callback"));
});
} else {
ajaxTodo(url, $this.attr("callback"));
}
event.preventDefault();
});
});
},
});
我们先从a标签中获取data值,然后,根据data的值,获取隐藏域,然后再取隐藏域的值,封装到url中。
function addMoreParamForUrl(url, key, value) {
if (url.indexOf("?") != -1) {
url += "&" + key + "=" + value;
} else {
url += "?" + key + "=" + value;
}
return url;
}