jquery 删除当前行,只需传递this

本文介绍了使用JavaScript实现从HTML表格中删除指定行的两种不同方法。一种是通过获取当前点击元素的父级元素并利用jQuery的.remove()方法来完成删除操作;另一种则是通过绑定.live()事件处理器的方式实现同样的功能。

 

   <tr>
        <td>
            <input type='hidden' name='annex' value="+rs+">
            <a href='javascript:void(0);' onclick=\"download('"+rs+"')\">"+rs+"</a>
            <span onclick='deleteTr(this);' style='cursor:pointer'>&nbsp;&nbsp;删除</span>
        </td>
    </tr>

 

    //删除当前行
    function deleteTr(nowTr){
        //多一个parent就代表向前一个标签,
        //本删除范围为<td><tr>两个标签,即向前两个parent
        //如果多一个parent就会删除整个table


        $(nowTr).parent().parent().remove();
        }

 

             删除.live('click',function(){
                        $(this).parents('tr:first').remove();
                        });

             

              原文出处:http://wawa129.iteye.com/blog/1663539

       

<think>我们正在讨论如何将JavaScript事件处理函数中的`this`参数转换为jQuery对象。在JavaScript的事件处理函数中,`this`通常指向触发事件的DOM元素。如果我们想使用jQuery的方法操作这个元素,就需要将其转换为jQuery对象。转换方法很简单:用`$()`包裹`this`即可,例如`$(this)`。例如,在一个点击事件处理函数中:```javascript$("button").click(function(){//这里的this是原生的DOM元素//转换为jQuery对象:var$this=$(this);//现在可以使用jQuery的方法,例如:$this.hide();});```这样,`$(this)`就是一个jQuery对象,可以调用jQuery提供的各种方法。注意:在jQuery的事件处理函数中,我们经常使用`$(this)`来操作当前元素。另外,如果是在其他上下文(如自定义函数)中,`this`可能不是DOM元素,需要根据实际情况判断。但在事件处理函数中,通常`this`就是触发事件的DOM元素。参考引用[^3]提到了jQuery中`$(document).ready`和`$(window).load`的区别,虽然与这个问题没有直接关系,但提醒我们注意事件绑定的时机。因此,将`this`转换为jQuery对象的方法是使用`$(this)`。下面生成相关问题:</think>### 如何将 JavaScript 事件处理函数中的 `this` 转换为 jQuery 对象? 在 JavaScript 事件处理函数中,`this` 通常指向触发事件的 **原生 DOM 元素**。要使用 jQuery 方法操作该元素,需将其转换为 jQuery 对象。以下是具体方法: #### ✅ 转换方法 ```javascript // 在事件处理函数中: element.addEventListener('click', function() { // 将原生 DOM 元素 this 转为 jQuery 对象 const $jqObj = $(this); // 现在可调用 jQuery 方法 $jqObj.hide().addClass('active'); }); // jQuery 事件绑定写法(原理相同): $('.btn').on('click', function() { $(this).css('color', 'red'); // thisjQuery 对象 }); ``` #### ⚠️ 注意事项 1. **箭头函数问题** 箭头函数会继承外层 `this`(通常是 `window`),**无法**获取事件元素: ```javascript // 错误示例(箭头函数) $('.btn').on('click', () => { $(this).hide(); // this 指向 window,转换失败! }); ``` 2. **严格模式兼容性** 在严格模式中,全局函数的 `this` 为 `undefined`,但事件处理函数不受影响[^3]。 3. **性能优化** 重复转换可能影响性能,建议缓存对象: ```javascript $('.item').on('hover', function() { const $el = $(this); // 只转换一次 $el.fadeOut().delay(500).fadeIn(); }); ``` #### 💡 应用场景 - 动态修改触发事件的元素样式 - 链式调用 jQuery 方法(如 `$(this).addClass().siblings().removeClass()`) - 访问 jQuery 扩展方法(如 `$(this).data()` 获取自定义属性) --- ### 相关问题 1. **JavaScript 原生事件处理与 jQuery 事件绑定有何区别?** (涉及原生 `addEventListener` vs jQuery `on()` 的机制差异) 2. **如何解决 jQuery 事件委托中 `this` 的指向问题?** (讨论 `event.delegateTarget` 和 `event.currentTarget` 的使用场景) 3. **为什么在 AJAX 回调函数中 `this` 的指向会变化?如何固定?** (分析 `$.ajax` 上下文与 `bind()`/箭头函数的解决方案)[^2] 4. **jQuery 的 `$(this)` 和原生 `this` 在性能上有何差异?何时应优先使用原生操作?** (对比 DOM 操作效率及适用场景) 5. **如何扩展 jQuery 原型方法并在 `$(this)` 上调用?** (实现自定义插件如 `$(this).customMethod()` 的技术要点)[^4] [^1]: 参数传递时需避免 `$` 冲突,可通过传递 `window.jQuery` 解决上下文问题 [^2]: jQuery 的 AJAX 配置会扩展 `ajaxSettings` 对象,影响回调函数的 `this` 指向 [^3]: `$(document).ready()` 与 `$(window).load()` 的 `this` 指向有本质区别 [^4]: 通过扩展 `jQuery.fn` 实现自定义方法后,可在 `$(this)` 上直接调用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值