次の関数を記述するより良い方法はありますか?
ただ持って'#' + div_id
いることは私には間違っているように見えます。
function hide_div(div_id) {
$('#' + div_id).hide();
}
次の関数を記述するより良い方法はありますか?
ただ持って'#' + div_id
いることは私には間違っているように見えます。
function hide_div(div_id) {
$('#' + div_id).hide();
}
文字列の連結に何らかの形で反対する場合は、代わりにこれを行うことができます。
$(document.getElementById(div_id)).hide();
次のように、完全修飾セレクターを渡すこともできます。
hide_div("#divId");
バニラ Javascript で実行したい場合は、次のようにすることができます。
document.getElementById(div_id).style.display = "none";
短い答え:いいえ。少し長く、よりハックな答え: 要素の ID を受け取り、その上で getElementById を返す 1 文字の長い名前を持つ関数を作成し、それを jQuery$()
で次のようにラップします。
function i(id) {
if (document.getElementById(id)) return document.getElementById(id);
else return "";
}
それで:
$(i(id)).doWhatever();
しかし、正直なところ、次のように考えてください。
$("#" + id)
12345678
$(i(id))
12345
それが三文字。その価値はありますか?この 3 人のキャラクターは、あなたにとって本当に重要ですか? document.getElementById(id) (27 文字) を使用しないことで、すでに大幅に節約されています。
いくつかの代替方法:
$(['#', div_id].join('')).hide();
$('#'.concat(div_id)).hide();
また、@Thomas は、この代替ソリューションに私を刺激しました:
関数を呼び出すときは、次を使用します。
$.proxy( hide_div, $('#' + div_id) );
// Then, you can do this:
function hide_div() {
this.hide();
}
これにより、より良い再利用が可能になる場合があります。か否か。
function hide_div(div_id) {
$(div_id).hide();
}
...どこ...
div_id = '#someId';
hide_div(div_id);
ユースケースによっては、ID の代わりにオブジェクトを渡すことができます。
$('#someobject').click(function(){
hideDiv(this);
});
いいえ、それ以上短くすることはできません。# + div_id の代替は次のようになります。
$('[id="'+div_id+'"]')
このクエリは [] 属性セレクターで動作しています。短くなく、きれいではなく、本当に遅いですが、とにかく代替手段です