我有这个PHP脚本来生成目录的缩略图。该目录中的文件数是动态的:
<?
if (isset ($product_imgfiles)) {
echo '<div class="row">';
for ($i=2; $i<($num_product_imgfiles+2); $i++) {
echo '<div class="col-xs-4 col-md-2" style="padding-left: 7px; padding-right: 7px;">
<a href="#" class="thumbnail product_imgfiles">
<img src="'. $directory . $product_imgfiles[$i] .'" style="margin-bottom: 5px;">
<span><i class="fa fa-times-circle"></i> hapus</span>
</a>
</div>';
}
echo '</div>';
}
?>
我每次点击缩略图时都会有这个jquery来监听事件:
echo '
$( ".product_imgfiles" ).each( function(index) {
$( ".product_imgfiles" ).click(function() {
event.preventDefault();
var img_files = $( ".product_imgfiles img" ).attr( "src" );
alert( img_files );
alert( \''.$product_token.'\' );
alert( '.$secret_token.' );
});
});
';
jquery部分能够显示警报消息。但是,不幸的是,循环不会停止,直到product_imgfiles
的数量,并且它显示src
img
标记的src
值。
虽然我需要的是在点击课程img
后获得product_imgfiles
src
代码值。如何点击每个img
类的每个mDataBase = SQLiteDatabase.openDatabase(this.cordova.getActivity().getDatabasePath(DB_NAME).getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
值?谢谢。
答案 0 :(得分:2)
删除.each循环。
.click()固有地将它应用于每个元素,你不需要再次遍历它们。
echo '
$( ".product_imgfiles" ).click(function(event) {
event.preventDefault();
var img_files = $( this ).children('img').attr( "src" );
alert( img_files );
alert( \''.$product_token.'\' );
alert( '.$secret_token.' );
});
';
此外,您需要将event
变量实际传递给构造函数。
正如评论中提到的那样,您使用this
引用当前对象,而不是再次使用选择器。
此外,产品令牌和秘密令牌令人困惑的位有点奇怪。对于每个.product_imgfiles对象,它都是相同的。那是你要的吗?如果是这样,那很好!如果没有,您应该将这些值存储为PHP中每个img元素的属性(例如data-product_token='$product_token'
),然后在JS中使用$(this).attr('data-product_token')
或$(this).data('product_token')
来引用它们。