1

嗨,我的 div 表中有一行,如下所示:

<div class="tbody plb" id="impemail">
    <div class="tbc1" style="border-right:none;">
        <input class="tblinput sname pvar" type="text">
        <input type="hidden" class="ppre" value="">
    </div>
    <div class="thc2" style=" width: 75%; border-left:1px dotted #CFCFCF;">
        <textarea class="tblinput semails txtInputta pvar" style="font-size:13px;"></textarea>
        <input type="hidden" class="ppre" value="">
        <div class="errmsg emailerr"></div>
    </div>
    <div class="hideRow" style="width:20px;float:right;padding:15px 0px 0px 0px;">
        <img src="../../../images/redcross.png" alt="" />
    </div>
</div>

当我使用jQuery函数单击类“hideRow”时,我尝试编写删除该行的函数,如下所示,这里我想在hideRow函数运行时清除输入和textarea字段,以便在刷新页面后值不应该在行中。我试过的jQuery函数如下:

 $(function () {
     // Delete row from PTC grid 
     $('.hideRow').live("click", function () {
         $(this).parents('.plb').hide("slow", function () {
             $(this).parents('.tblinput sname pvar').val('');
             $(this).parents('.tblinput semails txtInputta pvar').val('');
         });
     })
 });

任何人请告诉我如何清除这两个字段,以便在页面重新加载后这些值不应该存在。

4

2 回答 2

6

更改您的选择器,如下所示:

$(this).parents('.tblinput.sname.pvar').val('');
$(this).parents('.tblinput.semails.txtInputta.pvar').val('');

对于一个元素的多个classes,您需要class使用不带任何空格的方式连接这些名称dot(.),以便在它们之间创建一个选择器,如上所示。


你的选择器在做什么

您的选择器.tblinput sname pvardescendant selector格式。这意味着它在一个内部搜索 和pvar第二sname个搜索相同。snametblinput


相关参考:


根据评论

$(function () {
     // Delete row from PTC grid 
     $('.hideRow').live("click", function () {
         $(this).closest('.plb').hide("slow", function () {
           $(this).find('.tblinput.sname.pvar, .tblinput.semails.txtInputta.pvar').val('');
         });
     })
 });
于 2012-09-13T07:24:46.087 回答
0

您的主要问题是,在 for 的回调中.hide(), 的值是this指被隐藏的元素;正确的遍历技术.find()$(this).find('.tblinput.sname.pvar').val('');.

Javascript

 $(function () {
     // Delete row from PTC grid

     // .live() is deprecated, port to .on()
     $('.hideRow').live("click", function () {

         //use .closest() instead of .parents() - less traversing
         $(this).closest('.plb').hide("slow", function () {

             // search down, not up - and no space between class selectors
             $(this).find('.tblinput.sname.pvar').val('');
             $(this).find('.tblinput.semails.txtInputta.pvar').val('');
         });
     })
 });
于 2012-09-13T07:40:57.707 回答