2015-01-11 131 views
0

我有以下樣式的列表項。點擊jQuery獲取屬性

<li onclick="set_item('BRISBANE')" data-lat="-27.46758" data-lng="153.027892"> 
    BRISBANE QLD 4000 
</li> 

當項目被點擊其獲取信息,但我怎樣才能在其他2個文本框的其他2項?

HTML

<input type="text" id="country_id" onkeyup="autocomplet()"> 
<input type="text" id="latitude"> 
<input type="text" id="longitude"> 

的JavaScript

function set_item(item) { 
    $('#country_id').val(item); 
    $('#country_list_id').hide(); 
    var $this = $(this), 
     lng = $this.data('lng'), 
     lat = $this.data('lat'); 
    $('#latitude').val(lat); 
    $('#longitude').val(lng); 
    alert($this.data('lng')); 
} 

我試圖用上述JS使用$this.data('lng')但不知道爲什麼它不工作。

+0

嘗試'$(本).attr( '數據LNG')'' – scniro

+0

警報( $(this).data('lng'));'這只是打印undefined。 – lock

+0

我做了一個編輯試試@lock – scniro

回答

1

您需要通過this作爲參數傳遞給函數:

function set_item(item, li) { 
 
    $('#country_id').val(item); 
 
    $('#country_list_id').hide(); 
 
    var $this = $(li), 
 
    lng = $this.data('lng'), 
 
    lat = $this.data('lat'); 
 
    $('#latitude').val(lat); 
 
    $('#longitude').val(lng); 
 
    alert($this.data('lng')); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li onclick="set_item('BRISBANE', this)" data-lat="-27.46758" data-lng="153.027892">BRISBANE QLD 4000</li> 
 
</ul> 
 

 
<input type="text" id="country_id"> 
 
<input type="text" id="latitude"> 
 
<input type="text" id="longitude">

而且,你並不真正需要的字符串BRISBANE作爲參數傳遞。 set_item可以使用$this.text()來獲取LI的文字。

+0

真棒,這工作:D – lock

0

將單擊事件綁定到列表元素將是最好的辦法,那麼您可以輕鬆識別點擊li。在你的情況下$(this)$(window)的對象。

HTML:

<ul id="list"> 
    <li data-item="BRISBANE" data-lat="-27.46758" data-lng="153.027892">BRISBANE QLD 4000</li> 
</ul> 

<input type="text" id="country_id"> 
<input type="text" id="latitude"> 
<input type="text" id="longitude"> 

的JavaScript:

$("#list li").click(function(e){ 
    // $(this) is your li element 

    $('#country_id').val($(this).data("item")); 
    $('#country_list_id').hide(); 

    var lng = $(this).data('lng'), 
     lat = $(this).data('lat'); 
    $('#latitude').val(lat); 
    $('#longitude').val(lng); 

    alert($(this).data('lng')); 
}); 

演示:http://jsfiddle.net/