我在使用带有 jquery 的元素时遇到了问题。我在 var 中构建名称,例如:
var myId = "#" + myGotId;
$(myId).attr("title", "changed");
$(myId) 返回空值。我想通过 id 获取我的元素,但构建我的 Id 动态连接字符串。
@Pointy 编辑 — OP 在评论中提供的附加代码:
var form = $('form#formDefaultValue');
$(':submit', form).click(function(event) {
event.preventDefault();
$.post(form.attr('action'), form.serialize(), function(data, status, XMLHttpRequest) {
if (status == 'success') {
$("#msgInformation").html("Your changes have been successfully saved.");
jQuery("#spanDefaultValue").attr("class", "db");
var g = indexNodeSelected;
g = g.replace("\\", "\\\\\\\\");
$('#'+ g).find("span").attr("class", "");
}
最佳答案
我不知道到底发生了什么,因为您没有发布太多代码,但请确保您的 Javascript 代码正在运行 after 具有您的目标“id”值的元素已包含在的DOM。如果你有这个:
<html>
<head>
<script>
var myId = '#' + myGotId;
$(myId).whatever();
那么这将不起作用,因为在您的代码运行时不会看到实际页面。
相反,试试这个:
<script>
$(function() {
var myId = '#' + myGotId;
// ...
});
确保您的“myGotId”字符串正是您期望的值(即编码到目标元素的“id”属性中的值)也很重要。
edit 如果您认为您正在正确构建“id”,那么您可以尝试将此作为替代方法:
$(document.getElementById(myGotId)).whatever()
换句话说,您可以通过传递给 $()
函数将一个普通的 DOM 元素“包装”在一个 jQuery 对象中。如果可行,那么问题可能是您的“id”值以某种方式混淆了选择器引擎。 “id”值是否包含“.”有机会吗?
关于javascript - Jquery - 通过 id 在字符串中构造 id 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325278/