Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有父链接的jQuery.live()_Javascript_Jquery_Live - Fatal编程技术网

Javascript 带有父链接的jQuery.live()

Javascript 带有父链接的jQuery.live(),javascript,jquery,live,Javascript,Jquery,Live,我有一些如下的标记: <a href="#" class="someButton"> <span class="play">play</span> </a> 我还应该注意到,我无法控制标记的更改,因为它是第三方视频播放器,而是组织中的高层人员 只有当jQuery对象直接由选择器创建时,才能使用.live。你不能通过“查找”之类的工具导航到其他地方 $('.someButton').live('click', function(){

我有一些如下的标记:

<a href="#" class="someButton">
   <span class="play">play</span>
</a>

我还应该注意到,我无法控制标记的更改,因为它是第三方视频播放器,而是组织中的高层人员

只有当jQuery对象直接由选择器创建时,才能使用.live。你不能通过“查找”之类的工具导航到其他地方

$('.someButton').live('click', function(){
    if ( $(this).find('.stop').length ) {
        console.log('stop');
    } else if ( $(this).find('.play').length ) {
        console.log('play');
    }
});
使用.delegate API,它更显式,因此可能更清晰:

$('whatever').delegate(selector, events, handler);

选择器参数只能是字符串。如果它可以是一个函数,那就太好了。

只有当您的jQuery对象直接由选择器创建时,才可以使用.live。你不能通过“查找”之类的工具导航到其他地方

使用.delegate API,它更显式,因此可能更清晰:

$('whatever').delegate(selector, events, handler);
选择器参数只能是字符串。如果它能成为一个函数,那就太好了。

CSS

.play { color: green; }
.stop { color: red; }
加价

<a href="#" class="someButton">
    <span class="play">Click</span>
</a>
.

CSS

.play { color: green; }
.stop { color: red; }
加价

<a href="#" class="someButton">
    <span class="play">Click</span>
</a>

对不起,我想绑定到父链接,而不是跨度。对不起,我想绑定到父链接,而不是跨度。您应该考虑修改和使用jQuy.Advestor。你应该考虑修改和使用jQuy.Advest.1.live最终的选择器类似于.play.parenta。那是。。。古怪的这并不能真正起到选择器的作用,是吗?我想你可以添加一个伪类扩展,比如:hasParentselector技巧之类的。获取选择器的唯一原因是.live仍然返回jQuery对象,它只是忽略匹配的元素,并依赖于提供的选择器。由于某些特殊原因,jQuery必须连接.parenta,但它似乎与事件委派没有任何关系。+1.live的选择器以.play.parenta结尾。那是。。。古怪的这并不能真正起到选择器的作用,是吗?我想你可以添加一个伪类扩展,比如:hasParentselector技巧之类的。获取选择器的唯一原因是.live仍然返回jQuery对象,它只是忽略匹配的元素,并依赖于提供的选择器。由于某些特殊原因,jQuery必须连接.parenta,但它似乎与事件委派无关。这使得.play或.stop元素成为目标。OP希望父元素触发处理程序,而不仅仅是子元素。CSS样式使a元素在页面上的面积大于内部跨度。而是使用.bind来简化。.stop元素有一个更大的点击区域。我认为实时需求更重要。在我的JSFIDLE中,我们最初没有.stop,但是绑定可以工作,因为它是活动的。而live仅适用于选择器,而不适用于元素。因此,正如选择的答案所建议的那样,我们应该从一开始就选择父级,让函数知道应该做什么,或者,选择范围。是的,.live需求很重要,您的解决方案使处理程序启动,而不是OP希望的元素。对于仅限选择器的解决方案,您需要执行类似$'a:has.play'.live…,然后根据需要遍历到子体。谢谢。我不知道选择器会这么复杂。但是,这使得.play或.stop元素成为目标。OP希望父元素触发处理程序,而不仅仅是子元素。CSS样式使a元素在页面上的面积大于内部跨度。而是使用.bind来简化。.stop元素有一个更大的点击区域。我认为实时需求更重要。在我的JSFIDLE中,我们最初没有.stop,但是绑定可以工作,因为它是活动的。而live仅适用于选择器,而不适用于元素。因此,正如选择的答案所建议的那样,我们应该从一开始就选择父级,让函数知道应该做什么,或者,选择范围。是的,.live需求很重要,您的解决方案使处理程序启动,而不是OP希望的元素。对于仅限选择器的解决方案,您需要执行类似$'a:has.play'.live…,然后根据需要遍历到子体。谢谢。我不知道选择器会这么复杂。但是