按ID查找元素并附加链接

时间:2015-03-25 09:23:44

标签: javascript jquery ajax each

我使用jquery来获取和循环数据。在每次迭代时,它必须附加到列表项的链接。我通过条件检查撞墙了。我需要检查一个列表项是否已经有一个链接,如果是这样,只需附加到data-content属性,而不是覆盖当前正在发生的整个链接。

现在代码的方式永远不会打到其他地方,这是没有意义的。我需要新鲜的眼睛指出明显的。

$.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;});
    });
});

2 个答案:

答案 0 :(得分:0)

问题是$('.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
}

答案 1 :(得分:0)

如果你得到任何物体而不是它有一些长度。那么你就可以使用长度属性。

var xyz = $('.calendar').find("li[id='" + strMonth.toLowerCase() + day + "']").find('a');

if(xyz.length){


  //'a' is available there  
} else {

 //'a' is not available
}