我很遗憾... ...
我有一个带有三个面板的容器,我需要为所有这些面板添加一个类。如果我像这样做一个选择器:
$('#container').find('div:jqmData(role="panel")').length;
Firebug告诉我,这是三个面板,但是当我将鼠标悬停在源代码上时,一个面板没有突出显示,高度为0。
如果我在以下行中执行此操作:
$('#container').find('div:jqmData(role="panel")').addClass("HELLO");
这个元素,尽管发现,但没有得到“HELLO”这个类。另外两个元素得到一个“HELLO”类
我现在想知道这是怎么回事,因为控制台就在addClass之前,所以如果找到三个元素,为什么只有两个元素得到“HELLO”?另外,在分配类时,元素的高度应该是无关紧要的,不应该吗?
我有W3C-ed的来源。一切都好。这是简要版本:
<div data-role="page" id="container">
// one
<div data-role="panel" data-panel="menu">
<div data-role="page" id="menu_first">
<p>Menu Lorem Ipsum</p>
</div>
</div>
// two
<div data-role="panel" data-panel="mid">
<div data-role="page" id="mid_first">
<p>Mid Lorem Ipsum</p>
</div>
</div>
// three
<div data-role="panel" data-panel="main">
<div data-role="page" id="main_first">
<p>Main Lorem Ipsum</p>
</div>
</div>
</div>
jquery是一个很长的插件。这些是相关部分:
(function( $, window) {
$.widget("mobile.multiview",$.mobile.widget, {
_create: function() {
var self = this;
self._mainEventBindings();
},
_mainEventBindings: function () {
$(document).on('pagebeforeshow', 'div:jqmData(role="page")', function(event, data){
var page = $(this);
if ( page.data("counter") == 0 || typeof page.data("counter") == 'undefined') {
self.setupMultiview(event, page);
}
});
},
setupMultiview: function(event, page) {
var self = this;
page.find("div:jqmData(role='panel')").addClass('HELLO').end()
}
}) (jQuery,this);
答案 0 :(得分:0)
这个怎么样?
$('div').each( function() {
if( $(this).data('role') == "panel" ) {
$this.addClass("HELLO");
}
});
答案 1 :(得分:0)
确定。找到了一个
$('div:jqmData(panel="mid")').removeClass()
清除了所有已正确分配的内容。