2

我正在尝试在 jQuery Mobile 的列表视图中设置已读/未读消息的样式集。

                    <ul data-role="listview" data-theme="c" id="#messageList" style="padding-top:10%;">

                    <li data-icon="false">
                        <a href="#" onclick="messageClick()">
                         <p>
                            <span style="float:left;clear:left;font-weight: bold;text-decoration:underline;color:blue;white-space:pre-wrap; width:30ex">Some unread text</span>
                            <span style="float:right;font-weight: bold;">08/02/13</span>   
                         </p>
                        </a>
                    </li>
                    .....
                    </ul>

我的内心messageClick()

function messageClick(){    
    $(this).findclosest("span").css("font-weight","normal");
}

但这似乎不起作用。我哪里错了?

4

5 回答 5

4

findclosest不是函数。查看您的 javascript 控制台,我确定您遇到了错误。也this可能没有设置为元素,而是设置为窗口,因为您在全局范围内调用它。您可能想要的更像是:<a href="#" class="messageClick">

$('#messagelist').on('click','a.messageClick', function() {
    $(this).parent().find('span').first().css(...);
    return false;
}

请注意,我去找父母然后找到第一个跨度。我这样做是因为块元素p不能存在于内部a,因此不同的浏览器可能会以不同的方式对待它。我强烈建议使用类而不是内联样式,并基于这些类而不是一些随机的 DOM 层次结构进行定位。您的代码可能需要进行一些严肃的清理工作!

于 2013-02-08T14:52:29.143 回答
2

它是什么findclosest()在 jQuery 文档中不存在。如果你想访问<li> 下的第一个跨度,这样的东西应该可以工作:

function messageClick(){    
    $(this).find("p > span:first").css("font-weight","normal");
}

如果您想更改两个跨度,您可以:first从选择器中删除,即使$(this).find("span")您没有多个跨度也可以使用。

于 2013-02-08T14:52:35.713 回答
2

你不想find()-findclosest()不存在:

function messageClick(){    
    $(this).find("span").css("font-weight","normal");
}
于 2013-02-08T14:53:03.873 回答
1

jQuery Mobile 不适用于 onclick="... 或 occhange="... 事件,它们与 jQM 页面事件触发冲突。

您应该手动绑定单击事件,如下所示:

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('click', '#messageList li a', function(){   
        $(this).find("span:first").css("font-weight","normal");
    });    
});

这是一个有效的 sjFiddle 示例:http: //jsfiddle.net/Gajotres/Speu2/

于 2013-02-08T15:00:09.990 回答
0

您可能想使用 .find ,因为我认为 .findclosest 不存在(.closest 确实存在但不是为此)

于 2013-02-08T14:52:51.990 回答