有'#'+ div_id的替代品吗?

Fil*_*ype 6 javascript jquery coding-style

有没有更好的方法来编写以下功能?

'#' + div_id我看起来不对劲.

function hide_div(div_id) {
    $('#' + div_id).hide();
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*son 5

如果你以某种方式反对字符串连接,那么你可以这样做:

$(document.getElementById(div_id)).hide();
Run Code Online (Sandbox Code Playgroud)

您也可以传入完全限定的选择器,如下所示:

hide_div("#divId");
Run Code Online (Sandbox Code Playgroud)

如果你想在vanilla Javascript中这样做,你可以这样做:

document.getElementById(div_id).style.display = "none";
Run Code Online (Sandbox Code Playgroud)


D. *_*out 4

简短的回答:不。稍微更长、更黑客的答案:创建一个具有一个字母长名称的函数,该函数获取元素的 ID 并返回一个 getElementById ,然后将其包装在 jQuery 中$(),如下所示:

function i(id) {
    if (document.getElementById(id)) return document.getElementById(id);
    else return "";
}
Run Code Online (Sandbox Code Playgroud)

然后:

$(i(id)).doWhatever();
Run Code Online (Sandbox Code Playgroud)

但老实说,想一想:

$("#" + id)
  12345678

$(i(id))
  12345
Run Code Online (Sandbox Code Playgroud)

那是三个字符。这值得么?这三个角色对你来说真的那么重要吗?通过不使用 document.getElementById(id) (27 个字符),您已经节省了很多。