javascript - jquery 识别 li 是否被点击或 li 内的 p 被点击

标签 javascript jquery html dhtml

<ul id='myid'>  
<li id='1'> my text 1 <p id='1' >inside p1 clicked</p></li>  
<li id='2'> my text 2 <p id='1' >inside p2 clicked</p></li>  
<li id='3'> my text 3 <p id='1' >inside p3 clicked</p></li>  
<li id='4'> my text 4 <p id='1' >inside p4 clicked</p></li>  
<li id='5'> my text 5 <p id='1' >inside p5 clicked</p></li>  

</ul>    

你好,我只想知道如果我点击“我的文本 1”如何提醒以及如果我点击“inside p1 clicked”如何提醒。因为每当我尝试点击“我的文本 1”时,它就起作用了。但是当我尝试点击“inside p1 clicked”时,它会带来两个警报,一个是“my text 1”,另一个是“inside p1 clicked”。请帮助可能是解决方案。

下面是我正在使用的代码。

$("#myid").delegate('p','click', function(){

提前致谢

最佳答案

这是event bubbling的问题.您可以使用 event.target 获取当前点击的元素。

如果你想停止事件冒泡,你可以使用event.stopPropagation

// click event for li
$("#myid li").click(function(){
    alert("li clicked");
});

// click event for p
$("#myid li p").click(function(e){
    alert("p clicked");
    // stop event bubbling
    e.stopPropagation();
});

而且您的 HTML 也无效。永远不要以数字开头 id。

如果您还想为 future 的元素附加点击事件,请使用 .live.delegate

并用 return false 代替 e.stopPropagation

// click event for li
$("#myid li").live("click", function(){
    alert("li clicked");
});

// click event for p
$("#myid li p").live("click", function(){
    alert("p clicked");
    // stop event bubbling
    return false;
});

关于javascript - jquery 识别 li 是否被点击或 li 内的 p 被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993823/

相关文章:

javascript - 文件是否使用 XMLHttpRequest() 进行缓存

javascript - 如何根据列的最大值获取整行数据?

javascript - 使用 formData() 上传多个文件

javascript - 使用 options.items 与标题的 JQuery UI 工具提示扩展

jquery - 使用 jQuery 切换类

javascript - 在页面完全加载后获取 innerHTML

html - float :left display border but not center of the page?

javascript - 在数组(或对象)上迭代异步的最聪明/最干净的方法是什么?

html - 区 block 高度是个问题——我尝试了所有方法,但 :(

html - 如何在 html/css 中将一组搜索栏居中?