我的主要目标是防止特定子对象上的.click函数。 为此,我检查一下clicked元素是否不是那个特定的孩子。
HTML:
<p class="participate_session_red">
<input ...> <label> TEXT </label>
<span class="participate_session_more">
</span>
</p>
jQuery:
$(".participate_session_red").click(function(e){
if(e.target != $(this).find(".participate_session_more").get())
{
$(this).find(".participate_session_more").slideToggle();
}
});
因此,要检查我的代码是否正常工作,我仅使用Alert获取当前对象。
alert(e.target); returns that element that was clicked. For example:
[对象HTMLParagraphElement],[对象HTMLLabelElement],[对象HTMLSpanElement],...
alert($(this).find(".participate_session_more").get()); returns only
[对象HTMLSpanElement]
因此从理论上讲,两者都可以返回[object HTMLSpanElement],并且即使发生这种情况,我的代码仍然可以执行。
答案 0 :(得分:1)
get()
返回数组。数组永远不能等于DOM元素。
如果要查看e.target
中的find
不是 first 匹配元素,请将0
传递到get
:>
if (e.target != $(this).find(".participate_session_more").get(0))
或者,您可以通过index
查看find
返回的jQuery对象是否包含e.target
:
if ($(this).find(".participate_session_more").index(e.target) == -1)
答案 1 :(得分:1)
一个简短的测试方法是使用同时返回布尔值的is()
或hasClass()
$(".participate_session_red").click(function(e){
if(!$(e.target).is('.participate_session_more'))
{
$(this).find(".participate_session_more").slideToggle();
}
});