1

私はjsとjqueryにかなり慣れていません。基本的に、onClickイベントまたはこの方法で追加されたものからテーブル変数とid変数を変更できるようにしたいので、<a>後でphpを使用して変数を変更できます。これは概念実証にすぎず、変更を加えたため、機能していないようです。aから関数に変数を渡す方法はありますか?

全体的な目標:ロードミーから関数にIDとテーブル名を渡し、ダイアログボックスにtable_render.php?id = someid&table=sometableを表示するインラインonclickが必要です。

  <script>
    $(function loadMe(table, id) {
        $( "#dialog-view" ).dialog({
            autoOpen: false,
            height: 600,
            width: 700,
            modal: true,
            buttons: {
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            }
        });
        $( "#create-view" ).click(function() {
            $( "#dialog-view" ).load("table_render.php?id=" + id + "&table=" + table + "").dialog("open");
        });
    });
    </script>
    <a href="" id="create-view" onClick="loadMe(testimonials,1)">Some text</a>
    <div id="dialog-view" title="">
    </div>
4

3 に答える 3

1

だから私はそれを機能させました...ここに解決策があります

function createViewer(id, table) {
        var id;
        var table;
        $("#dialog-view").dialog({
            autoOpen: false,
            width:650,
            minHeight:400,
            show:{effect: "fade", duration: 500},
            hide:"clip",
            resizable: false,
            modal: true,
            buttons: {
                "Close": function () {
                    $(this).dialog("close");
                }
            }
        });
        $("#dialog-view").load("table_render.php?id=" + id + "&table=" + table + "").dialog("open");
    };

そしてインラインコード

<a href="#" onMouseDown="createViewer(<?php echo $row_testimonials['id'];?>,'testimonials');">View Quote</a>
于 2012-07-13T01:41:42.143 に答える
1

イベントを2回フックしています。1回はonclickを介して、もう1回はjQueryを介してです。あなたは1つを選ぶ必要があります。

jQueryの方法(推奨)を選択すると、jQuery引数(1つの引数、イベント)を取得することになります。ただし、jQueryはthis、イベントをトリガーした要素(この場合はAタグ)に設定されます。これを使用して、Aタグからデータを取得できます。

たとえば、クリックされたAのIDが必要な場合は、ハンドラーでこれを行うことができます。

var clickedId = $(this).attr('id');

Aタグごとに任意の情報(「tableName」など)を保存する場合は、HTML 5データ属性(推奨)を使用するか、独自の属性を作成することができます(これは機能しますが、「不適切な形式」です。 ")。例えば:

<a tableName='testimonials'>

var clickedFoo = $(this).attr('tableName');

または(少し良い):

<a data-tableName='5'>

var clickedTableName = $(this).attr('data-tableName');
// Also, I believe this would work:
var clickedTableName = $(this).data('tableName');

* 編集 *

もう少し明確にするために、基本的な全体的な考え方は次のとおりです。

1)PHPを介してAタグをページに書き込みます

1A)それらを書き出すとき、それらに固有のデータを1つまたは複数の属性の形式でAタグに配置します(例id='foo' data-bar='baz')。

2)「Aタグがクリックされるたびに、この関数を実行する」というJavascriptコードも記述します。

3)Aタグのクリックイベントに接続した関数内で、this変数(Aタグ自体を指す)を使用して、必要なデータ(「変数」)を取得します。

3A)たとえば、JQueryの「attr」メソッドを使用できます。$(this).attr('id')

4)利益!(または、少なくとも、取得したばかりのデータで何か役立つことをします)

于 2012-07-13T00:00:08.627 に答える
0

$(document).ready()ダイアログを初期化し、onclickイベントをバインドする関数を配置することをお勧めします。次に、ajaxリクエストのコールバック内のダイアログを開きます。

そうすれば、loadFunctionを使用してonclick属性を閉じることができると思います。(疲れた)

何かのようなもの:

HTML:

<a href="#" id="trigger" data-my-id="123" data-my-table="myTable">
  trigger
</a>

<div id="dialog">
 Dialog Contents....
</div>

JS:

$(document).ready(function() {


    $("#dialog").dialog({
        autoOpen: false,
        height: 600,
        width: 700,
        modal: true,
        buttons: {
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    $("#trigger").click(function() {

        var id = parseInt( $(this).attr('data-my-id');
        var table = $(this).attr('data-my-table');

        $("#dialog").load("table_render.php?id=" + id + "&table=" + table + "", 
          function(){
            $("#dialog").dialog("open");
          });
    });

});​

トリックを行う必要があります。

于 2012-07-13T00:07:03.910 に答える