Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 Can';使用onclick无法获得正确的$(this)元素。尝试使用:不用于div内的输入_Javascript_Jquery_Html - Fatal编程技术网

Javascript Can';使用onclick无法获得正确的$(this)元素。尝试使用:不用于div内的输入

Javascript Can';使用onclick无法获得正确的$(this)元素。尝试使用:不用于div内的输入,javascript,jquery,html,Javascript,Jquery,Html,这是一个很难写的标题,有很好的解释 我得到了以下html: <div class="requestItem clearfix"> <div class="col-sm-2">Great info goes here yo.</div> <div class="col-sm-2">Some info goes here</div> <div class="col-sm-2">Date

这是一个很难写的标题,有很好的解释

我得到了以下html:

 <div class="requestItem clearfix">
       <div class="col-sm-2">Great info goes here yo.</div>
       <div class="col-sm-2">Some info goes here</div>
       <div class="col-sm-2">Date goes here.</div>
       <div class="col-sm-1 pull-right">
            <div class="buttons">
                <div class="row">
                    <input type="button" value="Edit" class="btn dark-button tiny-button"  />
                    <input type="button" value="Delete" class="btn dark-button tiny-button margin-top" />
                    </div>
                </div>
            </div>
            <div class="row extraInfo">
                <div class="col-sm-12"> 
                   some random info
            </div>
        </div>  
  </div>
应该发生什么:当我单击元素输入的按钮之一时,不应该发生切换

发生的情况:$(this)始终是父div requestItem。我知道这可能是一个正常的问题,因为requestItem被包裹在按钮周围,但是,我需要知道按钮是否被单击,因为我不想切换幻灯片

提前谢谢

帮助后:这就是我的结局: 希望它也能帮助别人

$('.requestItem').click(function (e) {
    if (!$(e.target).is(':input')) {
        $(this).children('.extraInfo').slideToggle();
    }
});

您应该使用
event.target

工作区:


基本上,由于您的侦听器位于包含元素
div.requestitem
上,因此这就是回调函数的
this
上下文。您对输入的单击事件会冒泡到包含元素(您正在侦听的元素)。请记住,
将始终设置为与选择器匹配的元素。

您应该使用
事件。目标

工作区:


基本上,由于您的侦听器位于包含元素
div.requestitem
上,因此这就是回调函数的
this
上下文。您对输入的单击事件会冒泡到包含元素(您正在侦听的元素)。请记住,
将始终设置为与选择器匹配的元素。

默认情况下,
在jQuery单击处理程序中返回的是它绑定到的元素(在本例中,
.requestItem
)。要获取单击的元素,请使用
e.target

$('.requestItem').click(function (e) {
    console.log($(e.target));
    if ($(e.target).is('input')) {
        alert("input clicked"); return;
    } else { $(this).children('.extraInfo').slideToggle(); }
});

Fiddle:

默认情况下,
在jQuery单击处理程序中,此
返回的是它绑定到的元素(在本例中,
.requestItem
)。要获取单击的元素,请使用
e.target

$('.requestItem').click(function (e) {
    console.log($(e.target));
    if ($(e.target).is('input')) {
        alert("input clicked"); return;
    } else { $(this).children('.extraInfo').slideToggle(); }
});

小提琴:

$(此)
是您分配给事件的元素。使用
$(event.target)
获取实际单击的元素。
$(this)
是您分配给事件的元素。使用
$(event.target)
获取实际单击的元素。在幻灯片切换上,您仍需要使用
$(this)
.target
仅需要在比较中使用。否则,干得好!接得好,修好了。另一个答案更可靠,不会让你的答案错了或没有帮助+1现在已经修好了!在幻灯片切换中,您仍然需要使用
$(this)
.target
仅需要在比较中使用。否则,干得好!接得好,修好了。另一个答案更可靠,不会让你的答案错了或没有帮助+1现在已经修好了!