在 jquery 中传递一个 self 对象

Posted

技术标签:

【中文标题】在 jquery 中传递一个 self 对象【英文标题】:Passing a self object in jquery 【发布时间】:2011-04-14 16:27:40 【问题描述】:

在下面的代码中,如何在 validate 函数中传递 div 对象

  <div><input type="text"></input>&nbsp;&nbsp;&nbsp&nbsp;<a href="#" onclick="validate("Hot to pass the div objevt here")"</input> 

   <script>
    function validate()
    
      .....
      .....
       Finally remove the div   
    

     </script>

【问题讨论】:

【参考方案1】:

html

<div class='elementToRemove'>
    <div>
        <a href="#" onclick="validate(this)">some text</a>​​​​​​​​​​​​​​​​​​​​​​​
    </div>
</div>

javascript

function validate( elem ) 
    $(elem).closest('div.elementToRemove').remove();

validate() 函数中,elem 将表示接收到事件的&lt;a&gt; 元素。

然后你可以将它包装在一个 jQuery 对象中,use .closest() 获取第一个 &lt;div&gt; 祖先,use .remove() 将其从 DOM 中删除,并清理任何附加的数据,例如事件处理程序。

或者最好让 jQuery 处理您的事件处理程序:

HTML:

<div class='elementToRemove'>
    <div>
        <a href="#" class="someClassName">some text</a>​​​​​​​​​​​​​​​​​​​​​​​
    </div>
</div>

jQuery:

$('a.someClassName').click(function() 
    $(this).closest('div.elementToRemove').remove();
);

【讨论】:

如果这个 div 被另一个 div 包围了,我们可以做 $(this).closest('div').parent.remove();如果我们做 parent .remove() 我可以再次使用它 @rajeev .closest() 给出了与当前元素 api.jquery.com/closest 非常接近的元素,如果要删除 div 的父元素,只需提供对父元素的引用,即 ID 或类,现在在父元素上使用最接近的,这样既简单又省时,而不是从父元素开始调用parent()(这很耗时) @Rajeev - @Avinash 是对的。我更新了我的答案,举了一个例子,在你想用.closest() 定位的&lt;div&gt; 上放置一个类。【参考方案2】:
<div>  blah blah <a href="#" id="remove" > Delete </a>   blah blah </div>

$(function() 
 $('a#remove').click(function() 
     $(this).closest('div').remove();
 );
);

【讨论】:

以上是关于在 jquery 中传递一个 self 对象的主要内容,如果未能解决你的问题,请参考以下文章

打字稿 + Jquery Ajax + 这个

论参数self

jQuery:如何在事件处理函数中获取事件对象而不将其作为参数传递?

如何使用多处理将对象从主进程传递到子进程

python中定义函数时,self怎么理解:

在控制器 Swift 之间传递对象