1

次の html 構造を持つ:

<tr class="invisible">
    <td align="center">
        <a class="i_edit" data-target="30"></a>
    </td>
    <td class="category">
        <span class="f_type" style="background-image: url(/admin/assets/img/f_type_3.gif);"> Tests </span>
    </td>
    <td style="background-color: blue;">
        <select class="behaviour" name="behaviour" style="opacity: 1;">
            <option selected="" value="1" style="opacity: 1;">Por noticias destacadas</option>
            <option value="2" style="opacity: 1;">Por fecha</option>
        </select>
    </td>
</tr>

.i_edit内部のクラスにアクセスする最良/最速の方法はどれですか:

$('.behaviour').change(function(){

        $(this).closest('.i_edit').css('background-color', 'red'); //doesn't work
        $(this).parent().closest('.i_edit').css('background-color', 'red'); //doesn't work
        $(this).parent().parent().find('.i_edit').css('background-color', 'red'); //this works

    return false;

});
4

2 に答える 2

8

3つのどれも。

を使用$(this).closest('tr').find('.i_edit')します。これは、DOM の構造が変更されても読み取り可能であり、引き続き機能するためです。

http://api.jquery.com/closest/も参照してください。

于 2012-07-26T16:56:32.530 に答える
-1

最初に .parents('tr.invisible) を実行し、次に .find('.i_edit') を実行します

$('.behaviour').change(function(){
    var obj_this = $(this)

    obj_this.parents('tr.invisible').find('.i_edit').css('background-color', 'red');

   return false;
});

また、$(this) を複数回使用する必要がある場合は、変数に保存します。

var obj_this = $(this)
于 2012-07-26T16:56:47.347 に答える