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>

「this」と「that」を見つける必要があります。それらが存在する場合は、<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

それぞれを使用して、セレクターを反復処理できます。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 に答える