$qty
的值在我的数据库中。我已经阅读了几个类似的问题,我已经添加了$(document).ready
,但它仍然无效。
echo "<div class='sp-quantity'>
<div class='sp-minus fff'><a class='ddd' href='#' data-multi='-1'>-</a></div>
<div class='col-xs-3 sp-input'>
<input type='text' class='quntity-input form-control qty' pid='$bookid' id='qty-$bookid' value='$qty'/>
</div>
<div class='sp-plus fff'><a class='ddd' href='#' data-multi='1'>+</a></div>
</div>";
echo "<script>";
echo "$(document).ready(function(){";
echo "$('.ddd').on('click', function() {";
echo "var $button = $(this);";
echo "var $input = $button.closest('.sp-quantity').find('input.quntity-input');";
echo "$input.val(function(i, value) {";
echo "return +value + (1 * +$button.data('multi'));";
echo "});";
echo "});";
echo "});";
echo "</script>";
答案 0 :(得分:1)
你得到的PHP&amp; Javascript变量语法混乱。 PHP使用$
作为每个变量名的开头。 Javascript没有,加上jquery以特殊方式使用$
。最重要的是,只要字符串使用"
而不是'
,PHP就会自动对以$开头的任何内容进行字符串替换,这可以是有效的变量名。所以你的代码的结果是:
<script>
$(document).ready(function(){
$('.ddd').on('click', function() {
var $button = $(this);
var $input = $button.closest('.sp-quantity').find('input.quntity-input');
$input.val(function(i, value) {
return +value + (1 * +$button.data('multi'));
});
});
});
</script>
$button
和$input
将替换为这些名称的PHP变量的内容。我怀疑这不是你想要的 - 尽管我自己也做过这样的事情。我认为你想要的是:
<script>
$(document).ready(function(){
$('.ddd').on('click', function() {
var button = $(this);
var input = button.closest('.sp-quantity').find('input.quntity-input');
input.val(function(i, value) {
return +value + (1 * + button.data('multi'));
});
});
});
</script>
另外两个建议:
1 - 如果你在一堆Javascript(或纯HTML)回显线中绝对没有PHP值,你可以使用?>
退出PHP代码模式,而不是使用echo
并避免任何字符串替换问题。
2 - 就我个人而言,我更喜欢使用{$string}
作为字符串中的变量,因为它使替换更加明显,有时不那么模糊。