我有一个列表视图,当我点击列表视图中的链接时,它会启动一个弹出窗口。出于简化目的,我省略了listview,并且只从一个按钮开始。
我想从导致弹出窗口显示的按钮中检索属性,在我的示例中,名为customAttr
的属性。然后我想将值插入popupBasic
。
以下是我的基本示例jQuery Mobile代码:
<a href="#popupBasic" data-rel="popup" customAttr="value">Basic Popup</a>
<div data-role="popup" id="popupBasic">
<p>This is a completely basic popup, no options set.</p>
</div>
jsFiddle:http://jsfiddle.net/cPRCU/2/
通常当我使用jQuery(非移动)时,我更多地参与点击事件/打开弹出窗口/对话框。我希望能够阅读导致弹出窗口显示的按钮,我该怎么做?
答案 0 :(得分:6)
向按钮添加点击处理程序似乎有效。在此处理程序中,在弹出窗口显示之前修改它:
$('a[data-rel="popup"]').click(function () {
var link = $(this);
var data = link.attr('customAttr')
var popup = $(link.attr('href')); // assume href attr has form "#id"
popup.append(($('<p />').text(data)));
});
这是一个通用处理程序,它支持具有多个按钮/弹出窗口的页面。如果某些按钮不应该有这种行为,我会在所需按钮中添加一个类,并使a[data-rel="popup"]
选择器更具体。
请参阅小提琴:http://jsfiddle.net/cPRCU/3/
答案 1 :(得分:3)
我是在listview上做的,因为它对你更有用。
您必须在列表视图中为<a>
标记注册点击事件,如下所示。
$('#mylist a').bind('click', function(event){
});
同时,确保将数据存储在锚标记内,如下所示。
data-customattr
这里的一切都很小。
e.g。
<a href="#popupBasic" data-rel="popup" data-customattr="value2" >Basic Popup 2</a>
现在,您可以在点击事件中阅读data-customattr
的值,如下所示
$(this).data('customattr')
现在我假设您在弹出窗口中有<p>
标记的ID。如下所示
<p id="mypopup">This is a completely basic popup, no options set.</p>
使用ID可以替换弹出窗口的内容。
最终将所有内容整合在一起
$('#mylist a').bind('click', function(event){
console.log($(this).text());
$('#mypopup').html($(this).data('customattr'));
});
查看 live fiddle 作为工作示例http://jsfiddle.net/gFTzt/5/
如果您坚持使用按钮的示例,则声明一个ID为
的按钮<a href="#popupBasic" data-rel="popup" id="mybutton" data-role="button" data-customattr="button value">button example</a>
如上所述,注册点击事件并阅读customattr
值。
$('#mybutton').bind('click',function(){
alert($(this).data('customattr'));
});
查看按钮和列表视图的{kbd> live fiddle 示例http://jsfiddle.net/gFTzt/5/
这里我使用data
来获取值。如果没有数据属性,我们可以直接从锚标记中获取值,如下所示。
E.g。我们有一个锚标记如下。
<a href="#popupBasic" customattr="value1">Basic Popup 1</a>
我们可以使用value1
阅读.attr()
,如下所示。
$(this).attr('customattr')
以下是 Live fiddle 示例。
答案 2 :(得分:0)
我遇到弹出窗口问题但我终于意识到弹出窗口需要在页面内部。我的弹出窗口是弹出链接所在的页面的兄弟,并且直到我将其移动为该页面的链接和子级的兄弟之后才显示。