单击列表视图中的项目不会运行onclick

时间:2013-01-21 08:09:00

标签: javascript jquery html5 listview href

我有一个Jquery的ListView。

点击每个项目会转到另一个页面:

这是清单:

我将其填入代码,如下所示:

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>';

警报未显示..

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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;
}

答案 2 :(得分:0)

问题解决了

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

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

非常感谢