Javascript 如何在钛网格视图项中实现Onclick功能
我已经使用小部件开发了gridview应用程序(来自此代码) 我已经根据客户的要求修改了代码。现在,如果我想单击列表项上的“查看购物车”按钮,它将提示消息,如“已单击”。但我尝试了各种方法,但我找不到解决办法。谁能解释一下我们是如何编写代码的 我的申请表中有以下代码:Javascript 如何在钛网格视图项中实现Onclick功能,javascript,ios,gridview,onclick,titanium,Javascript,Ios,Gridview,Onclick,Titanium,我已经使用小部件开发了gridview应用程序(来自此代码) 我已经根据客户的要求修改了代码。现在,如果我想单击列表项上的“查看购物车”按钮,它将提示消息,如“已单击”。但我尝试了各种方法,但我找不到解决办法。谁能解释一下我们是如何编写代码的 我的申请表中有以下代码: var items = []; var showGridItemInfo = function(e){ alert("Onclick the row"); }; var delay
var items = [];
var showGridItemInfo = function(e){
alert("Onclick the row");
};
var delay = (OS_ANDROID) ? 1000:500;
$.tdg.init({
columns:3,
space:5,
delayTime:delay,
gridBackgroundColor:'#e1e1e1',
itemBackgroundColor:'#fff',
itemBorderColor:'transparent',
itemBorderWidth:0,
itemBorderRadius:5,
onItemClick: showGridItemInfo
});
function createSampleData(){
var sendit = Ti.Network.createHTTPClient({
onerror: function(e){
Ti.API.debug(e.error);
alert('There was an error during the connection');
},
timeout:10000,
});
sendit.open('GET', url+'android_livedev/client/test.php?action=listitems&categoryid='+subcategorylist_category_id+'&productmin=0&productmax=50');
sendit.send();
sendit.onload = function(){
var response = JSON.parse(this.responseText);
if(response[0].success == 0){
alert("No Products Found");
}
else {
items = [];
for (var x=0;x<response[0].data.length;x++){
var view = Alloy.createController('item_layout',{
image:imageurl+response[0].data[x].thumb_image,
product:response[0].data[x].product,
productprice:"$"+" "+response[0].data[x].price,
onItemClick: addcart,
}).getView();
var values = {
product: response[0].data[x].product,
image: response[0].data[x].thumb_image,
productid : response[0].data[x].productid,
};
items.push({
view: view,
data: values
});
};
$.tdg.addGridItems(items);
reateSampleData();
$.tdg.clearGrid();
$.tdg.init({
columns:nColumn,
space:nSpace,
delayTime:delay,
gridBackgroundColor:'#e1e1e1',
itemHeightDelta: 0,
itemBackgroundColor:'#fff',
itemBorderColor:'transparent',
itemBorderWidth:0,
itemBorderRadius:5,
onItemClick: showGridItemInfo
});
createSampleData();
});
$.win.open();
item_layout.xml代码如下所示:
<Alloy>
<View id="mainView">
<ImageView id="thumb"/>
<Label id="product"></Label>
<Label id="productprice"></Label>
<Button id="addcart" onClick="additemtocart"/>
</View>
</Alloy>
首先将ID切换到类,因为它们是非唯一的。只有在必要时才使用ID。第二,试着这样做:
$('.addCart').click(function() {
var item = $(this).silblings('.product').text;
addItemToCart(item);
});
$('.addCart').click(function() {
var itemId = $(this).attr('data-productId');
addItemToCart(itemId);
});
试着这样做:
$('.addCart').click(function() {
var item = $(this).silblings('.product').text;
addItemToCart(item);
});
$('.addCart').click(function() {
var itemId = $(this).attr('data-productId');
addItemToCart(itemId);
});
更好的是,在购物车按钮中添加一个data-productId
属性,您可以执行以下操作:
$('.addCart').click(function() {
var item = $(this).silblings('.product').text;
addItemToCart(item);
});
$('.addCart').click(function() {
var itemId = $(this).attr('data-productId');
addItemToCart(itemId);
});
这是更好的,因为你只需要在屏幕上的购物车按钮
综上所述,您可能还需要包含一个回退,当页面上没有javascript时,将项目添加到购物车中。请提供一个回退。上面的代码不完整且不可验证。我尝试了你的答案…但我无法获得解决方案。现在我尝试了一些方法并获得了按钮id。我更新了我的问题。所以请检查我的问题并给我一个解决方案。@KrishnaVeni,你混合了jQuery方式和javascript方式。如果您使用的是jQuery,我建议您尝试仅使用jQuery方法以提高可读性(将其保存在相同的api中)。同样地,在('click',function(){alert('click');})上使用
$('.addCart')代码>。在引用动态创建的元素时,需要使用on
方法。