为啥在使用 jqmData 添加属性时无法触发 jquery 移动小部件的增强功能?

Posted

技术标签:

【中文标题】为啥在使用 jqmData 添加属性时无法触发 jquery 移动小部件的增强功能?【英文标题】:Why I cannot trigger enhancements on jquery mobile widgets, when using jqmData to add attributes?为什么在使用 jqmData 添加属性时无法触发 jquery 移动小部件的增强功能? 【发布时间】:2013-03-01 18:09:34 【问题描述】:

我正在尝试创建一个完全动态的“jquery mobile”“表格小部件”。

问题是,JQM 正在使用它来创建不同的“表格模式”:

$.mobile.document.delegate( ":jqmData(role='table')", "tablecreate", function(e) 
    // some magic happens here
);

为了防止表格自动增强,我排除了触发属性":jqmData(role='table')",直到我的源代码准备好。然后我添加属性并调用它:

// tbody
target                   
    .empty()
    .append(allRows)
    // this enhances elements inside table rows
    .trigger("create")   
    .closest('table')
    // add triggering attribute
    .jqmData('role', 'table')
    // enhance the table (step 1 of 2)
    .table(
       create: function( event, ui ) 
    )

这只是让我半途而废,因为现在我的表具有必要的属性":jqmData(role='table')",但我似乎无法在其上触发tablecreate

我试过了

    .trigger('tablecreate')
    .table(
       tablecreate: function( event, ui ) 
    )

但它们什么都不做,所以我假设我的元素没有被委托事件绑定捕获(也可能是错误的)。

问题: 在纯 jquery 中,当我在时间 X 动态添加触发属性时,是否可以在委托处理程序中包含一个元素?

感谢您的意见!

【问题讨论】:

【参考方案1】:

好的。自己找到的:

问题是:

 .jqmData('role', 'table')

似乎并非一直有效,因为调用此函数时不会设置 data-role="table"

我尝试了以下方法:

 .attr('data-role', 'table')

并且设置了属性并且表格增强正常工作。

也许也能帮助别人!

【讨论】:

以上是关于为啥在使用 jqmData 添加属性时无法触发 jquery 移动小部件的增强功能?的主要内容,如果未能解决你的问题,请参考以下文章

为啥触发复选框时“已检查”属性不正确? [复制]

为啥在 Vue 中使用模态时我的 v-if 不触发?

当我添加 NSPredicate 时,为啥我的 NSFetchedResultsController 委托停止触发?

为啥在数据模板中使用 xaml UserControl 时无法绑定到依赖属性? [复制]

为啥我在使用 Knockout JS 时收到“无法读取属性 'nodeType' of null”错误?

在 Div 中添加子元素时,虽然使用 UseEffect 触发,但到达 useRef() 当前属性返回未知