0

我有一个列表视图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

只要导航到新页面,就不会触发该事件。您可以做的是将锚元素作为参数传递,然后在函数完成后导航到 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 回答
0

问题已解决

我给他发了一个空间变量,因此该功能对我不起作用..

没有问题,所以你不知道,

不管怎么说,还是要谢谢你

于 2013-01-21T09:18:29.453 回答