2015-01-11 134 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/