有没有办法在Jquery Mobile中创建一个包含可点击列表项的列表视图,每个项目有3个按钮?我不想使用分组按钮列表视图。我试图创建这个但按钮点击不起作用。单击任何按钮的行为类似于单击列表项。
答案 0 :(得分:1)
您可以向按钮点击添加e.stopImmediatePropagation();
(http://api.jquery.com/event.stopimmediatepropagation/),这样它们就不会传播到父列表项。
<强>更新强>
OP在评论中提到列表项是动态生成的。原始代码仍然有效,因为事件委派( https://learn.jquery.com/events/event-delegation/ )用于按钮。这是一个更新的例子:
在标记中清空UL
<ul data-role="listview" id="thelist">
</ul>
在页面创建上,填写列表视图并添加点击处理程序
$(document).on("pagecreate", "#page1", function(){
//make list dynamically
var allItems = '';
for (var i=0; i< 4; i++){
allItems += '<li data-rowid="' + i + '"><a href="#"><div data-role="controlgroup" data-type="horizontal"><input type="button" value="Hmm" /><input type="button" value="No" /><input type="button" value="Yes" /></div> Item ' + i + ' text or description</a></li>';
}
$("#thelist").empty().append(allItems).listview("refresh").enhanceWithin();
$("#thelist").on("click", "li input", function(e){
e.stopImmediatePropagation();
var rowid = $(this).parents("li").data("rowid");
var btnText = $(this).val();
alert("You clicked the button: " + btnText + " on row number: " + rowid);
});
$("#thelist").on("click", "li a", function(e){
alert("You clicked the listitem");
});
});
更新了 DEMO
<强> ORIGINAL:强>
<强> DEMO 强>
<ul data-role="listview" id="thelist">
<li data-rowid="1">
<a href="#">
<div data-role="controlgroup" data-type="horizontal">
<input type="button" value="Hmm" />
<input type="button" value="No" />
<input type="button" value="Yes" />
</div>
Item 1 text or description
</a>
</li>
</ul>
$(document).on("pagecreate", "#page1", function(){
$("#thelist li").on("click", "input", function(e){
e.stopImmediatePropagation();
var rowid = $(this).parents("li").data("rowid");
var btnText = $(this).val();
alert("You clicked the button: " + btnText + " on row number: " + rowid);
});
$("#thelist li").on("click", "a", function(e){
alert("You clicked the listitem");
});
});
您也可以将按钮放在listitem锚标签之外,并使用CSS来很好地定位所有内容......