我正在“即时”学习,所以请原谅我的无知。我正在试图找出如何将默认的“folderID”传递给我的#next和#prev点击下面的函数。我在正确的道路上吗?还是完全偏离基地?非常感谢你的时间。 K
$(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()
}
答案 0 :(得分:12)
您可以尝试以下方法:
var folderID = $(this).attr('data-id') || 1;
以上内容将data-attribute
的值分配给变量folderID
,如果选择器未返回匹配项,则会指定默认值1
。
在2016年,很可能从2015年开始,有可能使用几种方法来使用DOM获取data-id
属性值 - 以及jQuery - 这些选项如下:
var folderID = $(this).data('id'); // jQuery
var folderID = this.dataset.id;
var folderID = this.getAttribute('data-id');
显然,所有这些都要求this
是您希望从中检索属性值的适当元素。
下面提出的评论指出了上述明显的缺陷:
请注意,如果您的
data-id
为0,则会使用值1(0为假值)。
考虑到这一点,值得重新审视问题,显示一个非常类似的解决方案,但使用data-id
存在的检查:
var folderID = 'undefined' !== typeof this.dataset.id ? this.dataset.id : 1;
通过上面的内容,我们检查引用属性的类型(typeof
)是否不等于!==
)到undefined
;如果它不等于undefined
,我们将检索存储在该属性中的值(this.dataset.id
的属性值是data-id
属性的属性值),如果它是{ {1}}然后我们提供undefined
。
此方法使用条件(三元)运算符,其中对1
/ true
(或false
/ truthy
)的表达式进行求值,如果表达式评估为falsey
/ true
,然后使用truthy
字符后面的第一个语句。如果表达式的计算结果为?
/ false
,则使用falsey
之后的第二个语句:
:
参考文献:
答案 1 :(得分:1)
正常的简写是:
var folderID = $(this).attr('data-id') || 1;
答案 2 :(得分:0)
你是在正确的道路上,虽然我会将你的选择器$(this).attr('data-id')
的结果存储在一个变量中,这样你就不必再次在DOM上查找了。
答案 3 :(得分:0)
由于你的元素已经有了'data-id'属性,你可以在函数中找到该属性的值。
$("#next").click(function() {
// Get the value of the custom data value
var folderID = $('.folderID').attr("data-id");
var myInbox = "/test/SecComm/inboxResults.cfm?startRow="+nextstart;
myInbox+="&folderID="+folderID;
$.get(myInbox,function(data){
$("#messageList").html(data);
});
})