次のような[〜#〜] html [〜#〜]コードがあります-
<div class="bs-example">
<input type="text" id="typehead" style="width: 500px;" class="form-control" placeholder="accounts" />
<input type="text" class="form-control" placeholder="accounts" />
</div>
IDtypeheadを持つ親要素の幅を見つける必要があります。
したがって、この場合、クラスbs-exampleを持つdivの幅を見つける必要があります。
IDで要素の幅を取得できるように、上のdivで[〜#〜] id [〜#〜]を使用できませんページ内の多くの場所で使用する必要があるため、再利用可能なコードが必要だからです。
私がやったことは-
function myFunction()
{
var x = document.getElementById("myLI").parentNode.parentElement.width;
document.getElementById("demo").innerHTML = x;
}
しかし、それは機能していません。
var x = $("#typehead").parent().width();
使用できます
function parentWidth(elem) {
return elem.parentElement.clientWidth;
}
parentWidth(document.getElementById('typehead'));
引数document.documentElement
を指定して呼び出すと、スローされることに注意してください。スローする代わりにundefined
を返すようにするには、parentNode
の代わりにparentElement
を使用します。
function parentWidth(elem) {
return elem.parentElement.clientWidth;
}
alert(parentWidth(document.getElementById('typehead')) + 'px');
<div class="bs-example">
<input type="text" id="typehead" style="width: 500px;" class="form-control" placeholder="accounts" />
<br />
<input type="text" class="form-control" placeholder="accounts" />
</div>
clientWidth
プロパティを使用できます:
function myFunction() {
var x = document.getElementById("myLI").parentNode.parentElement.clientWidth;
document.getElementById("demo").innerHTML = x;
}
以下は、JQueryを使用したよりきれいな例です。 http://jsfiddle.net/srfqko8r/3/
<div style="width: 100px;">
<div style="width: 50px;" id="child">
</div>
</div>
function GetParentDivWidth(selector){
return $(selector).parent("div").width();
}
$(function(){
alert(GetParentDivWidth("#child"));
});
アラート「100」
汎用関数が必要な場合は、要素を渡してパラメーターとして確認し、jQuery closest
およびwidth
を使用できます。
コード:
function myFunction($el) {
return $el.closest('div.bs-example').width();
}