在 jQuery 中的同一 div 中分隔 "click on text" 和 "click on background" 事件

Separating "click on text" and "click on background" events within same div in jQuery

假设有一个带文本的 <div>。文本用 <br> 分成几行。如果我们在其中移动光标,最终光标图像会变为 "text"。如果我们将光标移到一边,它的图像会变回 "default",但我们可能会留在 <div> 内。

示例:

HTML

<div> long text here <br> short one <div>

已编译html

长文在这里
短文

如果我们将鼠标移动到 "one" 和 "here" 之间的位置,则鼠标指针会在同一 <div> 中发生变化。问题是:是否可以使用 jQuery 将使用 "text" 指针和 "default" 指针在同一 <div> 中完成的点击事件分开?

你指的是 css cursor 属性.

如果光标发生变化,那是因为鼠标悬停在具有不同 cursor 值的元素上,这意味着(当然)每个元素都可以根据点击事件分别定位。

对于这种特殊情况,将您的文本包裹在 span 中,您将实现您所追求的目标:

<div> <span>long text here</span> <br> <span>short one</span> <div>

因为你有 jQuery 标记,你可以选择像这样绑定你的事件处理程序:

$('span').click(function(event)
{
   alert('span clicked');
   event.stopPropagation();
});

$('div').click(function(event)
{
   alert('div clicked');
});

注意事项:

http://api.jquery.com/event.stoppropagation/ 停止传播是停止事件的一种方式 'bubbling up'。跨度位于 div 内,因此,从技术上讲,如果您的跨度已被单击 - 您的 div 也已被单击。你想在 span click 事件处理程序中停止它,因此我在 span click 处理程序上调用了 stopPropagation()

另请注意,我 select 基于 divspan,这将 select 所有 div 和所有跨度。您需要针对您的代码优化它。