0

選択したオプションの親であるtdを取得し、insertAfterを使用してその後に別のtdを挿入したいのですが、参照がnullに戻っていますか?誰かが理由を教えてもらえますか?

ありがとう

JQ('.defieldselect').live('change',function(){
    var $option = JQ(this).find('option:selected');
    if($option.attr('rel')=='Date'){            
        var ddlID = $option.parent().parent().parent().find('.criteria-value').find('input').attr("id");
        var index = ddlID.split("_")[1];
        var select = CreateDateSelectList(index);
        $(select).insertAfter($option.parent);
    }        
});

HTML

    <tr>

        <td id="g1_c0_criteria_field" class="criteria-field">
            <select class="defieldselect" name="g1_c0_criteria_field">

<option rel="Text">Product ID 1</option>
<option rel="Date">Date Added</option>

            </select>
        </td>
        <td class="criteria-operator">
            <select id="g1_c0_criteria_operator" name="g1_c0_criteria_operator">
                <option value="=">is equal to</option>
                <option value="!=">is not equal to</option>
                <option value="&gt;">is greater than</option>
                <option value="&lt;">is less than</option>
                <option value="LIKE">contains</option>
                <option value="NOT LIKE">does not contain</option>
                <option value="LIKE">begins with</option>
            </select>
        </td>


    </tr>
4

1 に答える 1

2

一連のparent()呼び出しを使用する代わりに、closest()関数を試してください。

$option.closest('div.parentClass').find('.criteria-value')....

探している親に有効なセレクターを渡します。このように、構造にあまり依存しません。

于 2013-02-08T20:30:00.007 に答える