Jquery 在<;李>;元素

Jquery 在<;李>;元素,jquery,css,dom,jquery-tokeninput,Jquery,Css,Dom,Jquery Tokeninput,有没有一种方法可以检测元素css边距上的点击 我在一个有点像的文本框中使用标签系统。我希望能够做到的是,当用户在两个标记之间单击时进行注册,并按此方式定位光标。这个空间是由标签上的边距创建的-有没有办法检测到该区域中的点击 空间是ul元素的一部分,当然,我可以检测到一个点击,但不能告诉它在哪里(我可以吗?),所以不知道光标的位置。我能想到的唯一解决方案是创建两个3px宽的空白跨度来代替边距,并在它们上注册点击……但显然这不是一个好的解决方案。有更好的方法吗 下面是一个JSFIDLE: 我所看到的

有没有一种方法可以检测元素css边距上的点击

我在一个有点像的文本框中使用标签系统。我希望能够做到的是,当用户在两个标记之间单击时进行注册,并按此方式定位光标。这个空间是由标签上的边距创建的-有没有办法检测到该区域中的点击

空间是ul元素的一部分,当然,我可以检测到一个点击,但不能告诉它在哪里(我可以吗?),所以不知道光标的位置。我能想到的唯一解决方案是创建两个3px宽的空白跨度来代替边距,并在它们上注册点击……但显然这不是一个好的解决方案。有更好的方法吗

下面是一个JSFIDLE: 我所看到的CSS的一点是:

    li.token-input-token-facebook {
        margin: 3px;
}

您可以为父
ul
元素cat绑定click事件处理程序,并查找最近的click点
li

$('ul.required').on('click', function(e){

   var y = e.pageY;

   var closestLiElem = findClosest('ul.required li', y); /// this is li you need

});

var findClosest = function(selector, y) {
    var closest, closestY;

    $(selector).each(function() {    
       var elem = $(this);
       // here find minimal distanse of  y to bounds of element
       var centerY =  parseInt(elem.offset().top) + parseInt(elem.height()) / 2;
       var localY = Math.abs(centerY - y);
       if(closestY==null || (localY  < closestY)) {
            closestY = localY;
            closest = elem;
       }
    });

    return closest;
}
$('ul.required')。在('click',函数(e){
var y=e.pageY;
var closestlieem=findClosest('ul.required li',y);///这是您需要的li
});
var findClosest=函数(选择器,y){
最近的,紧密的;
$(选择器)。每个(函数(){
var elem=$(本);
//这里求y到元素边界的最小距离
var centerY=parseInt(elem.offset().top)+parseInt(elem.height())/2;
var localY=Math.abs(centerY-y);
if(closestY==null | |(localY

这段代码只是一个示例,需要使用标签包装输入进行调试,应该可以在没有jQuery的情况下运行。 增加演示的边距和背景颜色

input {margin:0 3em;}
label {display:inline-block;background:rgba(0,0,0,0.1)}

考虑提供一个jsFoDLE或至少相关的代码…你可以使用填充(在代码< LI<代码>)而不是一个被边缘化的排序,虽然我不确定它对我连接到的演示有什么样的问题。法布里齐奥-李被一个样式化的边框包围着,所以除非我能以某种方式将我的边框设置为不圆而不是李的边缘,否则我认为这是不可能的。谢谢。很抱歉耽搁了,这花了我很多时间才弄清楚css,因为我在输入中使用了li元素,而不是输入元素本身。(而且还有一个零散的输入漂浮在周围。)谢谢!