2011-11-17 76 views
2

我有一个表,有两行,每行有两个单元格,每个单元格有几个信息,如办公室名称,地址和电话号码等。每个jQuery使用jquery,地址从每个单元格中拉出并馈送进入谷歌地图地理编码器对象以获取该点并将其绘制在地图中。现在,在地址值的每次命中时,我还想从jquery获取地址值的当前单元格中获取手机和办公室名称的唯一值。我需要这些值,以便我可以在InfoWindow中显示这些值地图?我如何获得这些值?如何使用jQuery获取父元素值?

<table class="OfficeInfo" border="0" style="width: 100%" cellspacing="10px" cellpadding="15px"> 
    <tr> 
    <td class="Office1" style="width=40%"> 
    <span class="OfficeName"> 
    <div id="ctl00_PlaceHolderMain_ctl00_ctl17_label" style='display:none'>Office1Link</div><div id="ctl00_PlaceHolderMain_ctl00_ctl17__ControlWrapper_RichLinkField" class="ms-rtestate-field" style="display:inline" aria-labelledby="ctl00_PlaceHolderMain_ctl00_ctl17_label"><div class="ms-rtestate-field"><a href="/" target="_blank">St. Francis Hospital</a></div></div> 
    </span> 
    <span class="Address"> 
    2001 86th Street West <br />Indianapolis, IN 46260   
    </span> <br /> 
    <span class="Phone"> 
    (402) 123-1234</span><br /><br /> 
    <a class="mapdirectionsLink" href="#">map &#38; directions&#62;</a><br /><br /> 
    <span class="Hours"> 
    MTW:9:00AM-5:00PM</span> 
    </td> 

    <td class="Office2" style="width:40%"> 
    <span class="OfficeName"> 
    <div id="ctl00_PlaceHolderMain_ctl00_ctl21_label" style='display:none'>Office2Link</div><div id="ctl00_PlaceHolderMain_ctl00_ctl21__ControlWrapper_RichLinkField" class="ms-rtestate-field" style="display:inline" aria-labelledby="ctl00_PlaceHolderMain_ctl00_ctl21_label"><div class="ms-rtestate-field"><a href="/" target="_blank">St. Margaret's Hospital</a></div></div> 
    </span>  
    <span class="Address"> 
    8075 North Shadeland Avenue <br />Indianapolis, IN 46250</span><br /> 
    <span class="Phone"> 
    (316) 123-3245</span><br /><br /> 
    <a class="mapdirectionsLink" href="#">map &#38; directions&#62;</a><br /><br /> 
    <span class="Hours"> 
    MTW:9:00AM-5:00PM</span> 
    </td> 
    </tr> 

    <tr>         
    <td class="Office3" style="border-top:1px dotted silver; width:40%;"> 
    <span class="OfficeName"> 
    <div id="ctl00_PlaceHolderMain_ctl00_ctl25_label" style='display:none'>Office3Link</div><div id="ctl00_PlaceHolderMain_ctl00_ctl25__ControlWrapper_RichLinkField" class="ms-rtestate-field" style="display:inline" aria-labelledby="ctl00_PlaceHolderMain_ctl00_ctl25_label"><div class="ms-rtestate-field"><a href="/" target="_blank">Munster Women's Center</a></div></div> 
    </span> 
    <span class="Address"> 
    395 Westfield Road <br />Noblesville, IN 46060</span><br /> 
    <span class="Phone"> 
    (316) 123-3245</span><br /><br /> 
    <a class="mapdirectionsLink" href="#">map &#38; directions&#62;</a><br /><br /> 
    <span class="Hours"> 
    MTW:9:00AM-5:00PM</span> 
    </td> 
    <td style="border-top:1px dotted silver; width:40%">       
    </td> 
    </tr>    

</table> 


      function codeAddress() { 
    var infowindow = new google.maps.InfoWindow({}); 
    $('span.Address').each(function(index) { 
     var addy = $(this).text(); 
     var off_name = $(this).siblings('.OfficeName').children(.ms-rtestate-field).text(); 
     var infowindow = new google.maps.InfoWindow({ content: 'Hello world' }); 

     geocoder.geocode({ 'address': addy}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       map.setCenter(results[0].geometry.location); 
       var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location, 
       title:addy   
      }); 


      //var currentCell=(this).closest(td).html()); 
      // Adding a click event to the marker 
      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.setContent('<span style="color:#808080; font-size:13px; font-family:Trebuchet">'+addy 
          +'<br> <a href="http://maps.google.com/maps?saddr=&daddr=' + this.position.toUrlValue() + '" target ="_blank">Get Direction To Here<\/a>'+      
          off_name + '</span>'); 
       infowindow.open(map, this); 
      }); 


      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
      } 
     }); 
    }); 
} 
+0

可能是聪明也加入您的JavaScript,或者更好的是刚刚贴上的相关部分,其余部分添加到的jsfiddle(HTTP:// jsfiddle.net) – Arend

+0

我现在也添加了JavaScript ...我想获得当前上下文的'this'的办公室名称和电话号码.. – AJSwift

+0

不是我想挑剔的细节,我建议您识别您的具有唯一ID的元素,而不是类。这样你可以针对特定的元素。尽管可以通过类来实现,但一个类的目的是作为一个通用的声明,它可以被许多元素共享,而一个id对于单个元素是特定的和唯一的。 – stefgosselin

回答

4

取决于this当前背景下,那么这应该工作:

$(this).parent().find('.officeName').html(); 
+0

这样做......感谢所有努力回答我的问题并解决我的问题的人。对此,我真的非常感激! AJ – AJSwift

+0

不客气,欢呼! –

+0

我使用从服务器端脚本生成的动态html和这种方法不适合我。我在某处失踪了吗?这是我的脚本示例: - '$(this).parent()。find('#msg')。html();' –

0

$(this).parent().find(".OfficeName").text()获取办公室的名称和$(this).parent().find(".Phone").text()获取手机的每个地址。

jsfiddle - 点击一个地址,它会显示名称和电话的警报。

+0

感谢您的演示!感谢! – AJSwift

+0

没问题。我希望这对你有所帮助。 :) –

+0

它确实是!我是jsfiddle的新手,但我喜欢它.. – AJSwift

0
$('td.Office1').chilldren('.Phone') 

会得到你的办公室1的电话号码从Office 1 TD

$('span.Address').siblings('.Phone') 

会得到你的电话号码与地址跨越

2

$(this).siblings('.Phone').html()$(this).siblings('.Address').html()

+0

是不是'.val()'只用于'输入'? **编辑:**呃,'输入'和'选项'等等。 –

+0

@XyanEwing你是对的 - 需要使用'.html()'而不是'.val()' –

-1

这里对于初学者来说是一个小而简单但很好的,适用于Jquery的PDF。尝试使用Jquery Cheat Sheet,因为它包含解决大部分问题的方法。

+0

-1这个东西已经老了(v1.2,当前版本是v1.7) – fresskoma

2

我们可以通过使用jquery或Javascript来做到这一点。这里我们将讨论电子邮件ID更新。

在波纹管示例中,弹出式窗口将从父窗口自动填充电子邮件ID打开。 更新后,电子邮件会自动在父窗口文本框中更新,并弹出窗口将专门关闭。

例子:

1)创建index.html文件为父窗口

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”> 
<html> 
<title></title> 
<head></head> 

<body> 
<table> 

<tr> 
<td colspan=”2″>Example for update email id.</td> 
</tr> 
<tr> 
<td>Email Id:</td> 
<td> 
<input type=’text’ name=”emailID” id=”emailId” value=”[email protected]”></td> 
</tr> 
<tr> 
<td> 
<input type=”button” name=”update” value=”Update” 
onClick=’window.open(“update_popup.html”, “”, “width=400, height=300″)’> 
</td> 
</tr> 
</table> 
</body> 
</html> 

2)创建为弹出窗口,电子邮件ID自动从填文件update_popup.html父窗口进行更新。

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”> 
<html> 
<title></title> 
<head></head> 
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js”></script> 
<script> 
$(document).ready(function(){ 

//== pre fill parent window email id in popup window for update 

var emailId = window.opener.document.getElementById(“emailId”).value; 
$(“#emailId”).val(emailId); 

//=== update updated email id in to parent window 

$(“#Save”).on(‘click’,function(){ 

var updated_emailId = $(“#emailId”).val(); 
window.opener.document.getElementById(“emailId”).value = updated_emailId; 
window.close(); 
}); 
}); 
</script> 

<body> 
<table> 
<tr> 
<td>Email Id:</td> 
<td> 
<input type=’text’ name=”emailID” id=”emailId” value=””></td> 
</tr> 
<tr> 
<td><input type=”button” name=”Save” id=”Save” value=”Save”></td> 
</tr> 
</table> 
</body> 
</html> 

了解更多详情..

http://www.delhincrjob.com/blog/how-to-get-the-parent-window-element-value-in-popup-window-using-jquery/