按 id 查找元素并追加 link
find element by id and append link
我正在使用 jquery 来获取和循环数据。在每次迭代中,它必须将 link 附加到列表项。我用条件检查碰壁了。我需要检查一个列表项是否已经有一个 link,如果是的话,只需附加到 data-content 属性而不是覆盖整个 link,这是当前正在发生的。
代码现在的方式永远不会碰到 else,这没有意义。我需要新的眼光来指出显而易见的事情。
$.ajax({
type: 'GET',
url: 'training/calendar',
datatype: 'json'
})
.done(function (data) {
$.each(data, function(k, v){
var date = new Date(v.date);
var day = date.getDate();
var month = date.getMonth();
var strMonth = textMonth(month);
if ($('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a')) {
var $this = $("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
$($this).data('content', $($this).data('content') + "--------------" + v.name + ' ' + v.address);
} else {
$('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").text('').addClass('event').css({
'border-radius': '24px',
'background-color': v.colour
})
.append("<a href='#' tabindex='0' role='button' " +
"data-toggle='popover' data-trigger='focus' data-placement='top' " +
"data-content='" + v.name + ', ' + v.address + "' class='details'>" + day + "</a>");
}
$("[data-toggle='popover']").popover();
$('a.details').on('click', function(e) {e.preventDefault(); return true;});
});
});
问题是 $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a')
永远不会输出 false
。它会给出一个 jQuery 对象,即使它什么也没找到。
如下更改您的 if
语句,您应该会得到更好的结果:
var a = $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
if ( a.get(0) != undefined ) {
// .get(0) will retrieve the DOM element from a jQuery object.
// If the DOM element doesn't exist, it will return undefined
}
如果你得到的任何对象比它有一些 length.so 你可以使用长度 属性.
var xyz = $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
if(xyz.length){
//'a' is available there
} else {
//'a' is not available
}
我正在使用 jquery 来获取和循环数据。在每次迭代中,它必须将 link 附加到列表项。我用条件检查碰壁了。我需要检查一个列表项是否已经有一个 link,如果是的话,只需附加到 data-content 属性而不是覆盖整个 link,这是当前正在发生的。
代码现在的方式永远不会碰到 else,这没有意义。我需要新的眼光来指出显而易见的事情。
$.ajax({
type: 'GET',
url: 'training/calendar',
datatype: 'json'
})
.done(function (data) {
$.each(data, function(k, v){
var date = new Date(v.date);
var day = date.getDate();
var month = date.getMonth();
var strMonth = textMonth(month);
if ($('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a')) {
var $this = $("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
$($this).data('content', $($this).data('content') + "--------------" + v.name + ' ' + v.address);
} else {
$('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").text('').addClass('event').css({
'border-radius': '24px',
'background-color': v.colour
})
.append("<a href='#' tabindex='0' role='button' " +
"data-toggle='popover' data-trigger='focus' data-placement='top' " +
"data-content='" + v.name + ', ' + v.address + "' class='details'>" + day + "</a>");
}
$("[data-toggle='popover']").popover();
$('a.details').on('click', function(e) {e.preventDefault(); return true;});
});
});
问题是 $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a')
永远不会输出 false
。它会给出一个 jQuery 对象,即使它什么也没找到。
如下更改您的 if
语句,您应该会得到更好的结果:
var a = $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
if ( a.get(0) != undefined ) {
// .get(0) will retrieve the DOM element from a jQuery object.
// If the DOM element doesn't exist, it will return undefined
}
如果你得到的任何对象比它有一些 length.so 你可以使用长度 属性.
var xyz = $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a');
if(xyz.length){
//'a' is available there
} else {
//'a' is not available
}