0
function insertQuestion(form) {
    var x = "<img src='Images/plussigndisabled.jpg' width='30' height='30' alt='Look Up Previous Question' class='plusimage' name='plusbuttonrow'/><span id='plussignmsg'>(Click Plus Sign to look <br/> up Previous Questions)</span>";
    if (qnum == <? php echo(int) $_SESSION['textQuestion']; ?> ) {
        $('#mainPlusbutton').replaceWith(x);
    }
    //append rows into a table code, not needed for this question
}....
$('.plusimage').live('click', function () {
    plusbutton($(this));
});

function plusbutton(plus_id) {
    // Set global info
    plusbutton_clicked = plus_id;
    // Display an external page using an iframe
    var src = "previousquestions.php";
    $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
    return false;
}
<form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">
<table id="question">
  <tr>
    <td colspan="2">
      <a onclick="return plusbutton();">
        <img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/>
      </a>
      <span id="plussignmsg">
        (Click Plus Sign to look up Previous Questions)
      </span>        
    </td>
  </tr>
</table>
<table id="questionBtn" align="center">
  <tr>
    <th>
      <input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
    </th>
  </tr>
</table>
</form>

上記のコードでは、ifステートメントが満たされたときに画像を別の画像に置き換えることができます。しかし、私の問題は、画像が置き換えられたときに、クリック時のイベントが無効にならないことです。私の質問は、画像が置き換えられたときに、onclickイベントを無効にするにはどうすればよいonclick="return plusbutton();ですか?

この状況でクリック作業のバインドを解除できます。href=#URLの最後に#を含めたくないので使いたくない

4

3 に答える 3

1

クリックイベントを無効にするために使用する必要があり$('.plusimage').off('click');ます(バインド解除とライブはjQuery <1.7で非推奨ですが、引き続きサポートされます)。

要素を1回クリックするだけの方法を探している場合は、次のように使用できます。

function insertQuestion(form) {   

    var x = "<img src='Images/plussigndisabled.jpg' width='30' height='30' alt='Look Up Previous Question' class='plusimage' name='plusbuttonrow'/><span id='plussignmsg'>(Click Plus Sign to look <br/> up Previous Questions)</span>" ;

    if (qnum == <?php echo (int)$_SESSION['textQuestion']; ?>) {
       $('#mainPlusbutton').replaceWith(x);
       //If the condition hold, then deactivate the click event!
       $('form table a').addClass('disabled');
    }
    else{
       //If the condition is false, click event is activated removing the disabled class
       $('.form table a').removeClass('disabled');
    }
    //append rows into a table code, not needed for this question
}

このクリックイベントを追加し、onclick="return plusbutton();内部リンク要素を削除します。

//Click event activated only if the disabled class is not set
$('form table a:not(.disabled)').on('click', function() {
   plusbutton($(this));
});
于 2012-11-25T23:12:49.967 に答える
0
$('.plusimage').live('click', function() {
  if (qnum != <?php echo (int)$_SESSION['textQuestion']; ?>) {
    plusbutton($(this));
  }
});
于 2012-11-25T23:06:57.870 に答える
0

JsFiddleで実行されなかったため、完全に正しくない可能性がありますが、Tomの質問に参加すると、いくつかのヒントが得られるはずです。

http://jsfiddle.net/jeanpaul1982/38hjZ/15/

おそらくその理由は、セッション変数をエコーまたはチェックする方法がないため、phpの一部を削除したためですが、そのためには、最初に$_SESSION変数が存在するかどうかをチェックする必要があると思います。

@add Tom:PHPエコーにいくつかの小さな変更を加えました

function insertQuestion(form) {   

    var x = "<img src='Images/plussigndisabled.jpg' width='30' height='30' alt='Look Up Previous Question' class='plusimage' name='plusbuttonrow'/><span id='plussignmsg'>(Click Plus Sign to look <br/> up Previous Questions)</span>" ;

 <?
 //to avoid typecasting just declare the variable as a number
 $text_question_res=0;

session_start(); //If session has not started previously
if(isset($_SESSION['textQuestion']) ) $text_question_res.=$_SESSION['textQuestion'];
echo <<<EOD

if (qnum == $text_question_res) //expected to be a number

EOD;

//    if (qnum == <?php echo (int)$_SESSION['textQuestion']; ?>) {


       $('#mainPlusbutton').replaceWith(x);
       //If the condition hold, then deactivate the click event!
       $('.plusimage').addClass('disabled');
    }
    else{
       //If the condition is false, click event is activated removing the disabled class
       $('.plusimage').removeClass('disabled');
    }
    //append rows into a table code, not needed for this question
}
于 2012-11-26T01:14:10.727 に答える