将锚标记ID传递给AJAX调用

时间:2013-12-16 02:34:11

标签: php jquery html ajax

我的程序是显示日历中特定日期是否有活动。我去我的数据库检查日期是否与事件有关,并将其回复给用户。

我有一个生成多个值的循环,ID最终将作为数据库中的相应ID。

以下是具有多个ID的标记:

echo "<br /><a class='popper' id='$event_id' data-popbox='pop2' href='#'>See more...</a><br />";

如何将ID传递给此ajax调用(我的功能是悬停链接以便用户查看带有详细信息的popbox)?

$(function() {

 $( "#pop2" ).load( "GET.php", { eventid: <?php echo $event_id; ?> }, function() {});
var moveLeft = 0;
var moveDown = 0;

$('a.popper').hover(function(e) {
    var target = '#' + ($(this).attr('data-popbox'));
        $(target).show();
        moveLeft = $(this).outerWidth();
        moveDown = ($(target).outerHeight() / 2);}, 

function() {
var target = '#' + ($(this).attr('data-popbox'));

    $(target).hide();
        });

    $('a.popper').mousemove(function(thisEvent) {
        var target = '#' + ($(this).attr('data-popbox'));
        leftD = e.pageX + parseInt(moveLeft);
        maxRight = leftD + $(target).outerWidth();
        windowLeft = $(window).width() - 40;
        windowRight = 0;
        maxLeft = e.pageX - (parseInt(moveLeft) + $(target).outerWidth() + 20);
            if(maxRight > windowLeft && maxLeft > windowRight)
                {
                leftD = maxLeft;
                }
        topD = e.pageY - parseInt(moveDown);
        maxBottom = parseInt(e.pageY + parseInt(moveDown) + 20);
        windowBottom = parseInt(parseInt($(document).scrollTop()) + parseInt($(window).height()));
        maxTop = topD;
        windowTop = parseInt($(document).scrollTop());
            if(maxBottom > windowBottom){
                topD = windowBottom - $(target).outerHeight() - 20;
                } 
            else if(maxTop < windowTop){
                topD = windowTop + 20;
                }
        $(target).css('top', topD).css('left', leftD);
});
   });

我的主要问题是,当我悬停事件的不同链接时,只返回一个值。如何传递用户悬停的特定ID并在我的PHP文件中查询它。

提前感谢您的回答! :)

2 个答案:

答案 0 :(得分:0)

这是一些疯狂的意大利面条代码。尝试将问题分解为步骤。

1)php是否正确地回显了html?

2)你能在控制台中选择那个元素吗?

$('.popper')

3)它有id吗?

$('.popper').attr('id')

4)你可以在悬停状态下记录该元素的id吗?

$('.popper').bind('hover', function(){
   console.log($(this).attr('id'));
});

5)将其存储为变量

$('.popper').bind('hover', function(){
   var id = $(this).attr('id');
   console.log(id);
});

6)调用一个函数:

function getDetails(id){
  $.get('http://example.com/?details='+id, function(data){
      console.log(data);
  })
}

$('.popper').bind('hover', function(){
   var id = $(this).attr('id');
   getDetails(id);
});

答案 1 :(得分:0)

这可能与您无关,但无论如何我都会发布我的代码。我同时在屏幕上有四个月的时间。当用户点击特定日期时,每日时间表的另一个弹出窗口会出现在jQuery对话框中(例如,9:00-名称,评论,约会目的等)这是足够通用的,以便您可以在特定时间使用它时间,日,月,无论你想要什么。

我不使用单个元素标识符,我使用伪类选择器。

下面的代码读取数据库,并使用该时间段的相关数据填充每个时间段。因此,当您将鼠标悬停在该时间段内时,所有存储的信息都会弹出另一个窗口。

 $.ajax({
              type: 'POST',
              data: {   date: scheduledate,
                     service: typeofservice},
               url: 'readdayschedulebackend.php',
          dataType: 'json',
          })
           .done(function(result){
                                  ttime = new Date();
                                  ttime.setHours(8,0);
                                  for(var t = 0; t <30; ++t)
                                    {
                                     tablehours = ttime.getHours();
                                     tableminutes = ttime.getMinutes();
                                     if (tablehours < 10)
                                       { tablehours = '0' + tablehours; }
                                     if (tableminutes < 10)
                                       { tableminutes = '0' + tableminutes; }
//                                     console.log(tablehours + ':' + tableminutes);
                                     $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(1)').html( tablehours + ':' + tableminutes );
                                     tablehours2 = ttime.getHours()+4;
                                       if (tablehours2 < 10)
                                         { tablehours2 = '0' + tablehours2; }
                                     $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(3)').html( tablehours2 + ':' + tableminutes );

                                     stringtime = tablehours + ':' + tableminutes + ':00';
                                     stringtime2 = tablehours2 + ':' + tableminutes + ':00';

                                     ttime = new Date(ttime.setMinutes( ttime.getMinutes() + 10 ));
                                     $.each( result, function(index, element){
                                        if (element.time == stringtime)
                                           { 
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').css( "background-color", "#F578A2" );
                                            tdname = element.lastname + ', ' + element.firstname + ' ' + element.middlename;
                                            tdname = tdname.substring(0,10);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').text( tdname );
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdlastname', element.lastname);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdfirstname', element.firstname);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdmiddlename', element.middlename);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tddob', element.dob);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdlocalid', element.localid);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tduniqueid', element.uniqueid);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdcomments', element.comments);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tddate', element.date);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdtime', element.time);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(2)').data( 'tdservice', element.service);
                                            }
                                        if (element.time == stringtime2)
                                           {
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').css( "background-color", "#F578A2" );
                                            tdname2 = element.lastname + ', ' + element.firstname + ' ' + element.middlename;
                                            tdname2 = tdname2.substring(0,10);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').text( tdname2 );
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdlastname', element.lastname);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdfirstname', element.firstname);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdmiddlename', element.middlename);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tddob', element.dob);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdlocalid', element.localid);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tduniqueid', element.uniqueid);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdcomments', element.comments);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tddate', element.date);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdtime', element.time);
                                            $('#popupscheduletable tbody tr:nth-child('+ (t+1) +') td:nth-child(4)').data( 'tdservice', element.service);

                                            }
                                        });
                                     }
              });//end ajax.done
});//end open large day dialog

//将鼠标悬停在预定时间并显示详细信息 $('#popupscheduletable tbody tr td:nth-​​child(even)')。hover(                                                            功能(){                                                           if($(this).html()。length&gt; 1)                                                                         {                                                                          $('。rolloverdiv')。html($(this).data('tdlastname')+','+                                                                                    $(this).data('tdfirstname')+''+                                                                               $(this).data('tdmiddlename')+''+'
'+                                                                               'DOB:'+                                                                               $(this).data('tddob')+'
'+                                                                               $(this).data('tdcomments')+'
'                                                                               );                                                                          } else {                                                                          $('。rolloverdiv')。html('');                                                                          }                                                            },                                                            功能(){                                                                       $('。rolloverdiv')。html('')                                                                       }                                                            );

===========================================
//hover over scheduled time and show details
$('#popupscheduletable tbody tr td:nth-child(even)').hover(
                                                           function(){
                                                          if ( $(this).html().length > 1  ) 
                                                                        {
                                                                         $('.rolloverdiv').html( $(this).data('tdlastname') + ', ' + 
                                                                                   $(this).data('tdfirstname') + ' ' +
                                                                              $(this).data('tdmiddlename') + ' ' + '<br>' +
                                                                              'DOB: ' +
                                                                              $(this).data('tddob')+ '<br>' +
                                                                              $(this).data('tdcomments') + '<br>'
                                                                              );
                                                                         } else {
                                                                         $('.rolloverdiv').html( ' ' );
                                                                         }
                                                           },
                                                           function(){
                                                                      $('.rolloverdiv').html( ' ' )
                                                                      }
                                                           );