Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使数组中的每个列表项都可单击?_Javascript_Jquery_Html_Css_Json - Fatal编程技术网

Javascript 如何使数组中的每个列表项都可单击?

Javascript 如何使数组中的每个列表项都可单击?,javascript,jquery,html,css,json,Javascript,Jquery,Html,Css,Json,我有一个不同城市的列表,我必须按离我最近的位置进行排序 这是小提琴: var jsonString={“城市A”:{“位置”:{“经度”:9.96233,“纬度”:49.80404},“城市B”:{“位置”:{“经度”:6.11499,“纬度”:50.76891},“城市C”:{“位置”:{“经度”:6.80592,“纬度”:51.53548},“城市D”:{“位置”:{“经度”:9.50523,“纬度”:51.31991},“城市E”:{“位置”:“经度”:6.80592,“经度”:51.70

我有一个不同城市的列表,我必须按离我最近的位置进行排序

这是小提琴:

var jsonString={“城市A”:{“位置”:{“经度”:9.96233,“纬度”:49.80404},“城市B”:{“位置”:{“经度”:6.11499,“纬度”:50.76891},“城市C”:{“位置”:{“经度”:6.80592,“纬度”:51.53548},“城市D”:{“位置”:{“经度”:9.50523,“纬度”:51.31991},“城市E”:{“位置”:“经度”:6.80592,“经度”:51.70158},“城市F:{“位置”:{“位置”:{“经度”:9.93368,“纬度”:53.55608},“城市G”:{“位置”:{“经度”:11.56122,“纬度”:48.14496},“城市H”:{“位置”:{“经度”:13.34253,“纬度”:52.5319},“城市I”:{“位置”:{“经度”:6.11327,“纬度”:50.77715},“城市J”:{“位置”:{“经度”:13.36671,“纬度”:52.54344};
var myData=JSON.parse(jsonString);
$(文档).ready(函数(){
var distanceObj=[],
i=0;
$。每个(myData,函数(a,b){
距离对象[i]={
距离:hesapla(9.9608999,49.7222842,b.Position.经度,b.Position.纬度),
地点:a
};
++一,;
});
距离对象排序(函数(a,b){
返回parseInt(a.distance)-parseInt(b.distance)
});
$。每个(距离对象,函数(a,b){
$(“#组”).append(“
  • ”+b.location+”:“+b.distance+”m
  • ”); }); console.log(distanceObj); hesapla函数(经度、纬度、长度1、纬度1){ 半径=6371; 梅内经度=梅内经度*(Math.PI/180); meineLatitude=meineLatitude*(Math.PI/180); long1=long1*(Math.PI/180); lat1=lat1*(数学PI/180); x0=经度*半径*数学cos(经度); y0=梅尼埃纬度*半径; x1=long1*erdRadius*Math.cos(lat1); y1=lat1*ERD半径; dx=x0-x1; dy=y0-y1; d=数学sqrt((dx*dx)+(dy*dy)); 返回数学整数(d*1000); }; });
    我想知道,如何使每个li元素都可以点击

    另外,第二个问题是,如何将一个特殊的城市过滤到列表的顶部,而不考虑距离

    提前感谢stackoverflow的精彩社区。

    这是您想要的吗

    $.each(distanceObj, function(a, b) {
        $('#groups').append('<li><a href="#">' + b.location + ': ' + b.distance + 'm </a></li>');
    });
    
    $。每个(距离对象,函数(a,b){
    $(“#组”)。追加(“
  • ”); });
    要使元素可单击,您需要使用
    “”);
    });
    

  • 如果要动态添加li,还可以使用在处理程序上使用委托事件绑定:
  • 您可以使用jQuery将li添加到列表的顶部,而不是将其添加到底部的
    append()
  • $(“#组”).prepend(“
  • 我很特别…”
  • ”);
    我仍然无法100%确定如何使用代码的第一部分。如何使每个li链接指向不同的页面?创建li元素时,将构建链接所需的任何数据嵌入到数据属性中,然后可以在处理程序中使用。我不敢相信我没有想到这一点,但这会使所有li元素指向同一链接。我应该说得更具体一些,因为我试图让每个li元素链接到不同的页面。我不敢相信我没有想到这一点,但这会让所有li元素都指向同一个链接。我应该说得更具体一些,因为我试图让每个li元素链接到不同的页面。
    $.each(distanceObj, function(a, b) {
        $('#groups').append('<li><a href="#">' + b.location + ': ' + b.distance + 'm </a></li>');
    });
    
    $.each(distanceObj, function(a, b) {
        $('#groups').append('<li><a href="#">' + b.location + ': ' + b.distance + 'm </a></li>');
    });
    
    $(document).ready(function () {
        $('#groups').on('click', 'li', function() {
           // handler here
        }
    
    $('#groups').prepend('<li>I am special ...</li>');