0

の ListView がありJqueryます。

各項目をクリックすると、別のページに移動します。

これはリストです:

次のようにコードに入力します。

function FillList() {
    var UL= $('#MyList');
    for (var i = 0; i < 3; i++) {
        var newLI = document.createElement("LI");
        UL.append(newLI);
        newLI.innerHTML = '<a href="NewPage.html" data-transition="slide" 
                           onclick="DoSomething('+i+');" >
                               <p> item number:'+i+'</p>
                          </a>';


    }
    $('#MyList').slideDown('slow');
}

関数 DoSomthing:

function DoSomething(numberLi)
{
  alert(numberLi);
}

リスト内の項目をクリックしても関数 DoSomething が実行されない、

最初に DoSomething 関数に入ることなく、別のページに移動します。

なぜ?

更新

コードが次のようになっている場合でも:

        newLI.innerHTML = '<a href="NewPage.html" data-transition="slide" 
                           onclick="alert('aaa');" >
                               <p> item number:'+i+'</p>
                          </a>';

アラートが表示されない..

4

3 に答える 3

1

これは、インライン イベント登録では、XHTML 構造レイヤーに JavaScript 動作コードを記述する必要があるためです。詳細はhttp://www.quirksmode.org/js/events_early.htmlを参照してください。

ここでデモを参照してくださいhttp://jsfiddle.net/8t2Ye/3/

HTML:

<a onclick="test1();">test 1</a>
<p>
<a onclick="test2();">test 2</a>

<script>
    function test1(){
        alert('test 1');
    }
</script>

JS(外部):

function test2(){
    alert('test 2');
}

test1 のみがトリガーされます。

アップデート

コードに構文エラーがあるようです。ここで私のデモを試してくださいhttp://jsfiddle.net/en7VU/1/

于 2013-01-21T08:35:37.017 に答える
0

問題は解決しました

私は彼にスペース変数を送信したため、関数が機能しませんでした..

それは問題にされていなかったので、あなたはそれを知ることができませんでした、

とにかくありがとう

于 2013-01-21T09:18:29.453 に答える
0

新しいページに移動している限り、イベントはトリガーされません。できることは、アンカー要素をパラメーターとして渡し、関数が完了した後に URL に移動することです。

newLI.innerHTML = '<a href="NewPage.html" data-transition="slide" 
                           onclick="DoSomething(this, '+ i +');" >
                               <p> item number:'+ i +'</p>
                          </a>';

そして機能。

function DoSomething(anchor, numberLi) {
    alert(numberLi);

    window.location.href = anchor.href; 

    return false;
}
于 2013-01-21T08:11:34.300 に答える