2015-07-13 10 views
1

HTML:Как получить непосредственного родителя JQuery?

<span class="ui-spinner ui-widget ui-widget-content ui-corner-all"><input class="spinner1 ui-spinner-input" id="q1" name="value" value="1" min="1" aria-valuemin="1" aria-valuenow="2" autocomplete="off" role="spinbutton"><a class="ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button" aria-disabled="false"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-n">▲</span></span></a><a class="ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button" aria-disabled="false"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-s">▼</span></span></a></span> 

JQuery:

$('.ui-spinner-button').click(function() { 
    // 
}); 

Я хочу, чтобы получить идентификатор и значение ария-valuenow

<input class="spinner1 ui-spinner-input" id="q1" name="value" value="1" min="1" aria-valuemin="1" aria-valuenow="2" autocomplete="off" role="spinbutton"> 

, когда я нажимаю на .ui-spinner-button

Как я могу это сделать. Я гугл пару дней, но не повезло.

+0

Вы можете использовать .parent(), чтобы получить родителя. – nikhil

+0

'$ (this) .prev(). Attr ('aria-valuenow') или $ (this) .siblings ('. Spinner1'). Attr ('aria-valuenow')' – Jai

+0

use '$ (this). предыдущая ('щ-кок-вход '). Attr (' ария-valuenow') ' – Satpal

ответ

2

Вам не нужно parent здесь, вам нужно prev родственные. Для получения предыдущего ввода используйте siblings() селектор.

Смотреть комментарии в коде ниже:

$('.ui-spinner-button').click(function() { 
 

 
    // Get the spinner input jquery object 
 
    var $input = $(this).siblings('.ui-spinner-input'); 
 

 

 
    // Get attribute values 
 
    var id = $input.attr('id'), 
 
    valueNow = $input.attr('aria-valuenow'); 
 
    alert(id + ' >>> ' + valueNow); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<span class="ui-spinner ui-widget ui-widget-content ui-corner-all"> 
 
    <input class="spinner1 ui-spinner-input" id="q1" name="value" value="1" min="1" aria-valuemin="1" aria-valuenow="2" autocomplete="off" role="spinbutton"> 
 
<a class="ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button" aria-disabled="false"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-n">▲</span></span> 
 
</a><a class="ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default ui-button-text-only" tabindex="-1" role="button" aria-disabled="false"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-s">▼</span></span></a> 
 
</span>

1

Я не уверен, зачем вам нужен parentNode или $.parent(). Используйте $(element).parent(), чтобы получить непосредственного родителя. В вашем случае:

$('.ui-spinner-button').click(function(){ 
    $(this).parent(); // gives you the immediate parent as a jQuery object. 
    $(this).attr("aria-valuenow"); // gives aria-valuenow. 
    $(this).attr("id"); // gives you the ID 
    this.id; // gives you the ID 
}); 
1

Это код JQuery, который работал для меня:

$('.ui-spinner-button').click(function() { 
    var elem = $(this).parent().find("input"); 
    alert("id: "+ elem.attr("id")+ ", aria-valuenow: "+ elem.attr("aria-valuenow"))); 
}); 

Here is a JSFiddle demo

Смежные вопросы