事件目标随机更改为jquery

时间:2012-08-08 05:50:09

标签: jquery-mobile jquery

我在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.targetspan标记内的a。我不知道为什么会这样。

请帮我调试一下。

2 个答案:

答案 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;

干杯!