0
<a href="#" class="audiocontrol"></a>
<a href="#" class="audiocontrol"></a>
<a href="#" class="audiocontrol"></a>
<a href="#" class="audiocontrol"></a>

<script>
    function playController(dataObj){
        alert(dataObj);
    }

    function playHandlers(){
        var dataObj = "stef";
        $('.audiocontrol').on('click', playController(dataObj));
    }

    $(document).ready(playHandlers);
</script>

无论我是否单击对象,这段代码都会在页面加载时触发。为什么?

4

3 回答 3

3

你想要的是:

function playController(dataObj){
    alert(dataObj);
}

function playHandlers(){
    var dataObj = "stef";
    $('.audiocontrol').on('click', function() { playController(dataObj); } );
}

$(document).ready(playHandlers);

您的代码编写方式是playController在您在调用中注册它时.on调用的。

jsfiddle

于 2013-07-20T00:05:15.920 回答
3

您正在调用该函数,因此传递playController. 你可以做这样的事情。

function playHandlers(){
    var dataObj = "stef";

    $('.audiocontrol').on('click', function() {
        playController(dataObj);
    });
}
于 2013-07-20T00:06:16.863 回答
1

这将起作用:(此处
演示)

function playController(dataObj) {
    alert(dataObj);
}

function playHandlers() {
    var dataObj = "stef";
    $('.audiocontrol').on('click', function () {
    playController(dataObj)
   });
}
$(document).ready(playHandlers);

这将在页面加载并调用函数时加载您的代码playHandlers()。您直接调用它是因为您忘记添加function(){}on/click 调用。

于 2013-07-20T00:06:38.823 回答