我在ul
中有多个超链接,我希望捕获超链接上的点击次数
div的结构如下,
<div style="margin:3%;" id="city-list">
<ul data-role="listview" data-theme="b" data-filter="true" data-filter-placeholder="Filter Cities...">
<?php foreach($cities as $city): ?>
<li>
<a id="city_<?php echo $city['city_id'] .'_'. $city['city_name']?>" href="#">
<span style="font-size: 14px;"><?php echo $city['city_name']; ?></span><br/>
</a>
</li>
<?php endforeach; ?>
<li class="no-results" style="display:none;">No results found.</li>
</ul>
</div>
用于捕获点击的jQuery
代码位于下方,
$("#city-list").delegate('a','click', function(event) {
event.preventDefault();
// console.log(event.target);
var city_id = event.target.id,
service_type = "<?php echo $service_type; ?>";
JE.search_regions(city_id, service_type);
$.cookies.set('city_id', city_id);
});
这在大多数时间都有效,除了在一些随机时间。
那时,event.target
是span
标记内的a
。我不知道为什么会这样。
请帮我调试一下。
答案 0 :(得分:4)
e.target
是点击的实际元素,因此如果您点击span
元素,e.target
将是span
元素,但点击会冒泡到父元素,所以即使它附加到父元素,该函数仍然会运行,这span
位于a
内是很自然的,点击span
也是一个点击a
元素,但e.target
将确切地确定实际接收点击的元素。
要引用a
元素,请使用this
关键字,它将引用绑定元素,在本例中为a
元素。
答案 1 :(得分:0)
为什么不使用
var city_id = jQuery(this).attr("id");
而不是
var city_id = event.target.id;
干杯!