我正在“学习”,所以请原谅我的无知.我正在试图找出如何将默认的“folderID”传递给我的#next和#prev点击下面的函数.我在正确的道路上吗?还是完全偏离基地?非常感谢你的时间. ķ
$(function() {
var folderID = $('.folderID').attr("data-id");
$("#next").click(function() {
var myInBox = "/test/SecComm/ajax_inBoxResults.cfm?startRow="+nextstart;
myInBox+="&folderID="+folderID;
$.get(myInBox,function(data){
$("#messageList").html(data);
});
})
$("#prev").click(function() {
var myInBox = "/test/SecComm/ajax_inBoxResults.cfm?startRow="+prevstart;
myInBox+="&folderID="+folderID;
$.get(myInBox,function(data){
$("#messageList").html(data);
});
})
$(".folderID").click(function() {
var folderID = $(this).attr('data-id');
<cfoutput>var myInBox = "/test/SecComm/ajax_inBoxResults.cfm
folderID="+folderID;</cfoutput>
$.get(myInBox,function(data){
$("#messageList").html(data);
});
})
})
var prevstart = 1
var nextstart = 1
function showPrev(newprevstart){
prevstart = newprevstart
$("#prev").show()
}
function hidePrev(){
$("#prev").hide()
}
function showNext(newnextstart){
nextstart = newnextstart
$("#next").show()
}
function hideNext(){
$("#next").hide()
}
解决方法
您可以尝试以下方法:
var folderID = $(this).attr('data-id') || 1;
JS Fiddle demo
上面将data-attribute的值分配给变量folderID,如果选择器没有返回匹配,则它会分配默认值1.
在2016年,很可能从2015年开始,使用DOM以及jQuery可以使用几种方法来获取data-id属性值 – 这些选项如下:
var folderID = $(this).data('id'); // jQuery
var folderID = this.dataset.id;
var folderID = this.getAttribute('data-id');
显然,所有这些都要求它是您希望从中检索属性值的适当元素.
下面提出的评论指出了上述明显的缺陷:
Please note that if you have a
data-idof 0,this will use the value 1 instead (0 being a falsy value).
考虑到这一点,值得重新审视问题,显示一个非常类似的解决方案,但使用检查data-id存在:
var folderID = 'undefined' !== typeof this.dataset.id ? this.dataset.id : 1;
通过上面我们检查引用属性的(typeof)类型是否不等于(!==)到undefined;如果它不等于undefined,我们检索存储在该属性中的值(this.dataset.id的属性值是data-id属性的属性值),或者,如果它是未定义的,那么我们提供的值为1.
这种方法使用条件(三元)运算符,其中表达式被评估为真/假(或真或假),如果表达式求值为真/真,那么第一个语句在?之后?字符被使用.如果表达式的计算结果为false / falsey,则使用以下第二个语句:
var variableName = expression ? ifTrue : ifFalse;
参考文献:
> JavaScript:
> Conditional (ternary) Operator.
> Element.getAttribute().
> HTMLElement.dataset.
> jQuery:
> attr().
> data().