2

我有一个包含几个输入字段的页面。

我需要找到具有值数组的字段,如果是,.remove()closest('tr')

标记类似于此

<table>
  <tr>
    <td>
      <input type="text" value="this">
    </td>
  </tr>
  <tr>
    <td>
      <input type="text" value="that">
    </td>
  </tr>
  <tr>
    <td>
      <input type="text" value="them">
    </td>
  </tr>
</table>

我需要找到“这个”和“那个”,如果他们在那里,删除他们的<tr>容器(和他们自己),所以我最终会得到:

<table>
  <tr>
    <td>
      <input type="text" value="them">
    </td>
  </tr>
</table>

我试过这个:

jQuery(document).ready(function($){
    var badfields = ['this', 'that'];
    var fieldvalue = $('input[type="text"]').val();

    if($.inArray(fieldvalue, badfields) > -1){
        $(this).closest('tr').remove();   
    }
});

但它似乎不想工作?

4

3 回答 3

2

您需要使用 遍历所有字段.each,因此如下所示:

$('input[type="text"]').each(function() {
    var fieldvalue = $(this).val();

    if ($.inArray(fieldvalue, badfields) > -1) {
        $(this).closest('tr').remove();   
    }
});

示例:jsfiddle

于 2013-01-25T20:52:06.677 回答
1

有时使用 jQuery 可以非常简洁。jQuery 具有可用于此类目的的内容选择器:

$("input[type=text][value=this], [value=that]").parents("tr").remove();

由于您不一定知道thisthat事先知道,因此您可以执行以下操作:

var badfields = ['this', 'that'];
$(badfields).each(function(i) { 
    $("input[type=text][value=" + this + "]").parents("tr").remove();
});
于 2013-01-25T20:54:03.520 回答
0

您可以使用 each 来遍历选择器。this在您的inArray范围内不是您正在寻找的元素。

演示:http: //jsfiddle.net/

html:

<table>
 <tr>
  <td>
  <input type="text" value="this">
  </td>
 </tr>
 <tr>
  <td>
   <input type="text" value="that">
  </td>
 </tr>
 <tr>
  <td>
   <input type="text" value="them">
  </td>
 </tr>
</table>

js:

jQuery(document).ready(function($){
 var badfields = ['this', 'that'];
    $('input[type="text"]').each(function(){
        if( $.inArray(this.value, badfields) > -1 ){
            $(this).closest('tr').remove();
        }
    });
});
于 2013-01-25T20:54:53.863 回答