user1735894
user1735894

Reputation: 323

jQuery access parent but object is null?

I want to get the parent of a selected option which is a td and then use insertAfter to insert another td after it but the reference is coming back null? Can someone tell me why?

Thanks

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>

Upvotes: 0

Views: 2472

Answers (1)

idrumgood
idrumgood

Reputation: 4924

Instead of using a chain of parent() calls, try the closest() function.

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

Pass it a valid selector for whatever parent you're looking for. This way you don't rely on structure so much.

Upvotes: 2

Related Questions