【问题标题】:same buttons with same effects - jquery OOP具有相同效果的相同按钮 - jquery OOP
【发布时间】:2014-03-26 04:33:10
【问题描述】:

我怎样才能给我的按钮同样的效果?因为它们都是一样的。但我想做的是在我点击它们时进行“类似灵魂”的验证。

我在 php 中的代码

echo "<form action='receipt.php?name=$name' method='post'>
        <input style='position:absolute; top:$this->yForBuy; left:$this->xForBuy; z-index:4;' type='button' id='btnSubmit' value='Purchase'/>
        <input type='hidden' name='bidder' value='$name'>
        <input type='hidden' name='item_no' value='$no'>
        <input type='hidden' name='item_name' value='$itname'>
        <input type='hidden' name='item_price' value='$bid'>
        </form>";

<label id='soul' style='position:absolute; z-index:5; color:black;'>purchased!</label>

这是我的 js 代码

$(document).ready(function(){
 $("#soul").hide();

    $("#btnSubmit").click(function()
    {
        var position = $(this).position();
        var topTo = position.top-10;
        alert("position: "+position.top+"\n new position:"+topTo);
        $("#soul")
            .css({'top' : topTo , 'left' : position.left, 'display' : 'block'})
            .show();


    });




 });

如果您在这里使用 OOP 结构,这就是为什么我有多个具有相同功能的按钮。我在 javascript 部分很挣扎,我不知道该怎么做。

【问题讨论】:

  • “类魂”验证是什么意思?
  • 在 .animate() 部分中,当单击按钮时,文本会上升,同时它会淡出。 :P 对不起我的解释。

标签: javascript php jquery oop


【解决方案1】:

id 属性在页面上应该是唯一的,并且每个按钮都不能重复。 JS 无法处理#btnSubmit 多次出现的事实..

如果代码是由 php 循环生成的,那么您可能需要对 id 进行编号。#btnSubmit1#btnSubmit2 等。

要么为按钮添加一个类并将其用作通用选择器,要么尝试HTML5 data attributes

echo "<form action='receipt.php?name=$name' method='post'>
        <input style='position:absolute; top:$this->yForBuy; left:$this->xForBuy; z-index:4;' type='button' class='purchaseButton' value='Purchase'/>
        <input type='hidden' name='bidder' value='$name'>
        <input type='hidden' name='item_no' value='$no'>
        <input type='hidden' name='item_name' value='$itname'>
        <input type='hidden' name='item_price' value='$bid'>
        </form>";

<label id='soul' style='position:absolute; z-index:5; color:black;'>purchased!</label>

然后:

$(document).ready(function(){
 $("#soul").hide();

    $(".purchaseButton").click(function()
    {
        var position = $(this).position();
        var topTo = position.top-10;
        alert("position: "+position.top+"\n new position:"+topTo);
        $("#soul")
            .css({'top' : topTo , 'left' : position.left, 'display' : 'block'})
            .show();
    });
 });

为了动画,为表单包含一个 id 属性(再次必须是唯一的) &lt;form action='receipt.php?name=$name' id='FORMID' method='post'&gt;

然后在js中:

$(document).ready(function(){
     $("#soul").hide();

        $(".purchaseButton").click(function()
        {
            var position = $(this).position();
            var topTo = position.top-10;
            alert("position: "+position.top+"\n new position:"+topTo);
            $("#soul")
                .css({'top' : topTo , 'left' : position.left, 'display' : 'block'})
                .show();
            $('#WHATEVER').animate({
               // whatever options here..
               complete: function() { 
               // this will run after the animation has finished
               $('#FORMID').submit(); // manually submit the form
               }
            });
        });
     });

【讨论】:

  • 谢谢你。 :) 这很好地解决了我的问题:D
  • 顺便说一句,我如何在提交表单之前先 .animate() ?
  • 您可以在.click 事件中执行必要的动画,而不是type="submit",然后只需调用$('#FORMID').submit();(您需要在表单html 中添加id=""。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多