gpt4 book ai didi

jquery - 使用已经设置的 id 的更优雅的方法是什么? jQuery ("#"+ t)?

转载 作者:行者123 更新时间:2023-12-01 06:15:03 26 4
gpt4 key购买 nike

我是 javascript 的新手,尽管到目前为止我已经构建了很多可用的网站和应用程序..

btu 我觉得我过去将变量 id 传递给 jquery 的方式很天真。例如,当我必须使用一些旧代码时,我曾经这样做过..假设我的所有网站都已使用这样的“a”标签进行编码

<a id='myId' onclick='doSome(this.id)' > link </a>

然后在JS中

function doSome(id){

//old code removed and replaced by jquery
jQuery("#"+ id).show();

}

这样的功能可以完美地工作......

所以,再次假设我除了函数内的代码之外无法更改任何其他内容,那么使用变量 id 的最佳方法是什么?因为据我所知,如果我只使用过

jQuery(id).show();

而不是

jQuery("#"+ id).show();

这不会起作用......对吧?

最佳答案

jQuery(id).show();

确实不起作用,因为 jQuery/$ 函数的参数是选择器,而不是 ID。

'#'+id 可用作选择器,但前提是 id 中的字符在选择器中有效且不需要转义.

在 HTML4/XHTML1 中,只有字母数字加 .:-_ 在 ID 中有效,因此您只需担心 .:.如果您执行 '#'+id,其中 ida.b,您实际上会选择 ID 为 a 的元素> 和类b。在 HTML5 中,ID 中有效的字符更多,因此粗略地将 id 附加到 # 更加不可靠。

使用普通的旧 DOM 代替选择器不太像 jQuery,但它更安全并且(稍微)更快:

$(document.getElementById(id))

无论如何,当您已经有权访问某个元素时,依赖 id 来选择该元素是愚蠢的:document.getElementById(this.id) 显然是与 this 相同。

如果您可以更改标记,那么您最好只将 this 传递给函数,那么您可能会丢失选择器/getElementById,并且如果您不需要它来做任何事情否则您也可能会丢失 id 属性。更好的是,完全避免内联事件处理程序属性并从脚本分配事件处理程序,例如使用 jQuery $('#myId').click(function() { ... });;在函数内部,this 将是相关元素。

虽然我不太明白代码应该做什么... show()ing myId onclick of myId似乎有点多余,因为它必须已经显示才能让您单击它。

关于jquery - 使用已经设置的 id 的更优雅的方法是什么? jQuery ("#"+ t)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com