- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 HTML 文档中创建一个新的“li”,并在完成 AJAX 请求后(发送表单后),我希望将以下数据添加到 li,如下所示:
<li class="issue" data-winbook-issueId="3">My Issue here</li>
我有相关“li”的引用资料,我尝试执行以下操作:
liReference.data("winbook-issueId", returnedJSONObject.issueId);
如果我在下一行中查询相同的内容,如下所示:
var id = liReference.data("winbook-issueId");
我在警报或调试器中获取了 id 的值。但是,如果我尝试在另一个函数(如 deleteIssue()
)中访问此数据,那么 id 似乎返回未定义!!
最初创建 li 时,没有数据属性。我正在尝试在创建的节点中添加一个新节点(因为“节点”是使用微模板引擎创建的)。
我可能缺少什么想法吗?我附上了下面的代码(上面是下面代码的概念解释)。我正在尝试访问值“data-winbook-issueId”和“data-winbook-issueStatus”
function postDataToWall(contentType, dataAreaToReplaceWithContent)
{
var content = dataAreaToReplaceWithContent.children('.dataForm').val();
var postDetailsContainer = dataAreaToReplaceWithContent.parent();
var wcid = postDetailsContainer.parents('li.listOfIssues').data('winbook-wcid');
var postData ="Issue="+content+"&wcid="+wcid;
$.ajax({
type:"POST",
url:"/Issue",
data:postData,
success:function(result, status){
switch(contentType.toLowerCase())
{
case "Issue".toLowerCase():
dataAreaToReplaceWithContent.remove();
postDetailsContainer.append('<ul class="postDetails">'+
'<li class="issueid">Issue '+result.issueid+':<li>'+
'<li class="postData">'+content+'</li>'+
'<li><ul class="actionsNavBar">'+
'<li><a class="actionNavBarLink" data-winbook-action="CloseIssue">Close Issue</a><span class="dotSeparator">.</span></li>'+
'<li><a class="actionNavBarLink" data-winbook-action="Comment">Comment</a><span class="dotSeparator">.</span></li>'+
'<li><a class="actionNavBarLink" data-winbook-action="Option">Suggest Option/Alternative(s)</a></li>'+
'</ul></li></ul>');
var postNode = postDetailsContainer.parents('li.post');
postDetailsContainer.parents('.dataForm').toggleClass('dataForm');
postNode.children('.hoverMenu').toggle(); //enable the hover menu for delete/edit
postNode.data("winbook-issueStatus","open");
postNode.data("winbook-issueId",result.issueid);
$.data(postNode,"winbook-issueStatus","open");
someData = postNode.data("winbook-issueId");
someData2 = postNode.data("winbook-issueStatus");
break;
}
},//end success function
error: function(xhr, status){
alert("Status: "+xhr.status+" = "+xhr.statusText+": "+xhr.responseText);
}
});//end ajax
编辑:使用数据的函数:
<li class="post issue" data-winbook-issueStatus="open" data-winbook-issueId="44">
<a class="delete" data-winbook-delete="issue">
<img class="hoverButton deleteButton" src="http://localhost:8080/Winbook/images/deleteredicon.png"/>
</a>
<a class="edit" data-winbook-edit="issue">
<img class="hoverButton editButton" src="http://localhost:8080/Winbook/images/editpencil.png"/>
</a>
<div class="postContainer">...</li>
它在 a.delete 的 live('click') 处理程序中调用:
$('a.delete').live('click', function() {
var issueIdToDelete = $(this).parent().data("winbook-issueId");
//send ajax request for deletion...but issueIdToDelete is undefined!!
}
注意:问题仅适用于我想在创建后立即删除的节点。在服务器上创建并发送的节点工作正常...上面的编辑片段是从“显示” data-* 属性的源文件复制的,但在 DOM 树中不可见,如下面的评论中所述(并正确指出所以来自@Pointy)
最佳答案
首先感谢Pointy对我的坚持和包容。
看起来 DOM 结构很好,我不知道的是使用 $.data(key, value)
函数设置数据只在 中执行更新$.cache
并且不会为 DOM 节点创建新的数据属性。你可以查询它,但是会失败的是:
$('[data-winbook-issueId='+result.issueId+']').fadeOut("slow",function(){
$(this).remove();
});
因为根据 ajax 调用刚刚创建的 data-* 属性仅存储在缓存中。要真正让它成为页面 DOM 的一部分并以这种方式引用,您需要使用 .attr(...) 函数来设置它,如下所示:
postNode.attr("data-winbook-issueId",result.issueId);
对此的解释可以在我上面链接到的同一线程中找到:Why don't changes to jQuery $.fn.data() update the corresponding html 5 data-* attributes?
我尝试订阅 setData 和/或 changeData 事件并使用它来更新,但由于某种原因它不起作用,所以我没有在事件回调中调用 .attr(...) 增加开销直接在postNode上设置即可。
希望能帮助遇到同样问题的人:)
关于jquery - 使用 jquery.data() 为新创建的节点设置的值,无法在其他方法中访问 - 返回未定义!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6402186/
只是想知道这些结构之间有什么区别(text、data、rodata、bss 等)在链接描述文件中: .data : { *(.data) } .data : { *(.data*) }
Data 定义为其核心功能之一 gfoldl : gfoldl :: (Data a) => (forall d b. Data d => c (d -> b) -> d -> c b)
以下之间有什么区别:data-sly-use、data-sly-resource、data-sly-include 和 数据-sly-模板?我正在阅读 Sightly AEM 上的文档,我非常困惑。
我有一个 Spring Boot、Spring Data JPA (hibernate) Web 应用程序,并且想引入文本搜索功能。 我理解以下内容 hibernate search 或 spring
我不知道我的代码有什么问题。我读了其他有同样问题的人的一些问题,但没有找到答案。当我尝试编译时出现以下错误: ||In function 'main':| |35|error: expected ex
我不太确定为什么会收到此错误或其含义。我的数据框称为“数据”。 library(dplyr) data %>% filter(Info==1, Male==1) %>% lm(CFL_
我一直在 GitHub 等更现代的网站上看到这些属性,它们似乎总是与自定义的弹出窗口一致,如 title 属性。 Option 1 Option 2 Option 3 Option 4 我在 HTML
如何用 iCloud Core Data 替换我现有的 Core Data?这是我的持久商店协调员: lazy var persistentStoreCoordinator: NSPersistent
我一直在 GitHub 等更现代的网站上看到这些属性,它们似乎总是与自定义的弹出窗口一致,如 title 属性。 Option 1 Option 2 Option 3 Option 4 我在 HTML
我正在通过 this project 在 Android 上摆弄 node.js ,我需要一种方法将 js 文件部署到私有(private)目录(以隐藏源代码,防止用户篡改),该目录也物理存在于文件系
大家好我有点沮丧,所以我希望得到一些帮助。我的项目在 SwiftUI 中。我想使用图像选择器将图像保存到 Core Data。我实现了让 ImagePicker 工作,但我正在努力转换 Image -
我有以下数据和代码: mydf grp categ condition value 1 A X P 2 2 B X P 5
我一直在努力解决这个问题,但我根本找不到任何解决问题的方法。希望这里有人可以提供帮助。 我正在尝试为具有以下结构的某些数据创建个人选择矩阵: # A tibble: 2,152 x 32 a
我了解 Data.Map.Lazy 和 Data.Map.Strict 是不同的。但是,当您导入 Data.Map 时,您究竟导入了什么:严格的、惰性的还是两者的组合? 最佳答案 懒人。看着docs
我正在开发一个 C 程序,用于从 BerkeleyDB DBTree 数据库中提取数据值与特定模式匹配的记录。我创建数据库,打开它,将键的 DBT 和数据的另一个 DBT 清零,将 DBT 标志设置为
所以我有以下成员(member)历史表 User_ID | Start date | End Date | Type(0-7) | ---------------------------
随着最近推出的包dataframe ,我认为是时候正确地对各种数据结构进行基准测试,并突出每种数据结构的优势。我不是每个人的不同优势的专家,所以我的问题是,我们应该如何对它们进行基准测试。 我尝试过的
我有来自 API 的数据,但无法将数组中的数据设置为 vue.js 中的 this.data这是来自 API 的数据(JSON) 你能告诉我这个语法吗 {"id":1613, "name_org":"
在 Vue.js到目前为止,我已经找到了两种定义数据的方法:data: {} 和 data() { return; }. data: { defaultLayout: 'default' }
我正在研究Spring Data Rest Services,并在自定义拦截器中遇到一些问题。之前我使用spring-data-rest-webmvc 2.2.0并以以下方式添加了拦截器。 publi
我是一名优秀的程序员,十分优秀!