2011-11-17 53 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/