【问题标题】:Passing a self object in jquery在 jquery 中传递一个 self 对象
【发布时间】: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>

【问题讨论】:

    标签: jquery jquery-ui jquery-selectors jquery-validate


    【解决方案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();
     });
    });
    

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2012-10-20
      • 2013-04-28
      • 2021-08-07
      • 1970-01-01
      • 2021-12-10
      相关资源
      最近更新 更多