【问题标题】:jQuery to run after PHP loadjQuery 在 PHP 加载后运行
【发布时间】:2011-12-17 15:40:52
【问题描述】:

我正在使用 Big Commerce 平台开发一个网站。购物车页面内置于 PHP 调用的 sn-ps 中。我无权访问 PHP 文件。我需要做的是获取跨度标记的值(在给定索引处)并检索该值,我使用此值来确定我的 minQTY 文本字段应该是什么。我希望我的代码在页面加载后运行。但是我的脚本在页面上不起作用。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">

$(document).load(function(){
            $("a.CustomizeItemLink");
            $changeIndex = $("a.CustomizeItemLink").index('a.CustomizeItemLink');
            $change = $("a.CustomizeItemLink").length;
            $productTestArray = ['/american-boxwood-buxus/', '/lavander-crape-myrtle-lagerstroemia-fs/']
            $productLength = $productTestArray.length;

            for(i=0, j=0; i<=$change, j<=$productLength; i++, j++){
            $productTest = "http://www.tnnursery.net"; 
            $productTestValue = $("td.blah a").get(i);                    
            $productTest = "http://www.blah.net" + $productTestArray[j]; 
            $MD = $productTestValue;
            $MS = $productTest;
            $minQTYArray = ['100','100','75','50','25','20','15'];
            $cartSpanValue = $(".productAttributes td span:eq("+i+")").text();            
            $rdTestArray2 = ['6-12','12-18',"1-2'","2-3'","3-4'","4-5'","5-6'"];
            $arr2Test = jQuery.inArray($cartSpanValue, $rdTestArray2);
            $minQTYValue = $minQTYArray[$arr2Test];
            $cartQtyValue = $(".qtyInput:eq("+i+")").val();

            if($MD != $MS){

            }
            else{    
                if($cartQtyValue >= $minQTYValue){

                }
                else{
                    if ($arr2Test == -1){
                    $cartQtyValue = $(".qtyInput:eq(" + i + ")").val('100');    
                    }
                    else{
                    $cartQtyValue = $(".qtyInput:eq(" + i + ")").val($minQTYValue);  
                    alert($cartQtyValue);
                    }
                }
            }
        }

    });
});
});
    </script>

    </td>
    <td class="ProductName" colspan="1">
        <a href="http://www.blah.net/blah-blah-blah/">Item Name1</a><table class="productAttributes" cellpadding="0" cellspacing="2">
<tr>
<td>
    <label>Plant&#8203; Size&#8203;s:</label>
</td>
<td>
    <span>12-18&#8203;&quot;</span>
</td>

改变
28500 ()

        <div style="display: none" class="WrappingOptions">
            Gift Wrapping:

            <a href="#" onclick="Cart.ManageGiftWrapping('4eea86d587825');" style="">Add</a>
            <span style="display: none">
                (<a href="#" onclick="Cart.ManageGiftWrapping('4eea86d587825');">Change</a> or <a href="cart.php?action=remove_giftwrapping&amp;item_id=4eea86d587825" onclick="return Cart.RemoveGiftWrapping();">Remove</a>)
            </span>
            <br />
            <span style="display: none">
                Gift Message:

            </span>
        </div>
    </td>
    <td align="center" class="CartItemQuantity">
        <span style="padding: 0; margin: 0;"><input type="text" size="2" name="qty[4eea86d587825]" id="text_qty_4eea86d587825" class="qtyInput quantityInput" value="50"/></span>

        <div style="">
            <a href="cart.php?action=remove&amp;item=4eea86d587825" onclick="Cart.RemoveItem('4eea86d587825'); return false;" class="CartRemoveLink">Remove</a>
        </div>
    </td>

我的问题是如何设置我的 jQuery 在 PHP 加载到页面后运行?

【问题讨论】:

  • 什么意思? PHP 是一种服务器端语言,默认在 jQuery 运行之前“加载到页面中”。

标签: php jquery


【解决方案1】:

首先,你应该恢复$(document).ready(function(){});

其次,php 在服务器端运行,因此在页面本身加载之前。您不必担心您的 javascript 会在 PHP 之前运行。

最后,我认为您的代码未运行的原因可能是由于语法错误。如果您直接复制了代码,那么您的打开函数有多个结尾。我不确定这是否是故意的,但是当加载功能不必要时,您有三组关闭功能。

另外,这一行:

$productTestArray = ['/american-boxwood-buxus/', '/lavander-crape-myrtle-lagerstroemia-fs/']

语句结尾没有分号。进行这些更改,看看您的代码是否开始正常运行。

编辑:另外,在您的 For 循环中,您定义 i 和 j。这是为什么?我相信它们将始终与您设置的方式相同。我错过了什么吗?

【讨论】:

  • 最终 $productTestArray 将比 $change 大得多。我意识到那些语法错误。如果我能更加注意的话,本来可以为我节省几个小时的面部种植。感谢您提供有关 PHP 的信息
【解决方案2】:

尝试将$(document).load 替换为$(window).load

【讨论】:

  • 另外:只是一个注释。即使您的 jQuery 语句是页面的第一行,页面上的所有 PHP 也已经被执行。 PHP 是在服务器到达客户端的 Web 浏览器之前发生的预处理。 JavaScript,以及其中的 jQuery,在浏览器在 DOM 中遇到它们之前不会运行。 (当然,如果有 AJAX 调用,所有的赌注都没有了,但在同步服务器交互中,您永远不必担心 JavaScript 会在 PHP 加载之前执行。DOM 准备情况应该是您最关心的问题。
  • 谢谢。我用过这个,但我没有清理我的代码。那是我的错。谢谢。
【解决方案3】:
$(document).ready(function(){
//your code here

});

【讨论】:

  • 我实际上已经尝试过了。这是我最初拥有的。但它什么也没做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 2017-08-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多