Jquery mobile jQuery Mobile Clickhander赢得';不适用于自定义对象的实例

Jquery mobile jQuery Mobile Clickhander赢得';不适用于自定义对象的实例,jquery-mobile,event-handling,click,anchor,Jquery Mobile,Event Handling,Click,Anchor,我正在jquerymobile中为锚定标记设置一个click处理程序,通过引用锚定标记中的处理程序函数(我需要这样做,因为这样做很麻烦)。如果我使用字符串或整数作为函数参数,这种方法可以很好地工作,但是如果我尝试输入对象的实例(如下所示),它就不起作用。任何关于我可能做错什么的建议都将不胜感激 $(文档).ready(函数(){ 函数testObject(){ 这是1.1; } 函数maketestObject(param1){ var result=newtestobject(); re

我正在jquerymobile中为锚定标记设置一个click处理程序,通过引用锚定标记中的处理程序函数(我需要这样做,因为这样做很麻烦)。如果我使用字符串或整数作为函数参数,这种方法可以很好地工作,但是如果我尝试输入对象的实例(如下所示),它就不起作用。任何关于我可能做错什么的建议都将不胜感激


$(文档).ready(函数(){
函数testObject(){
这是1.1;
}
函数maketestObject(param1){
var result=newtestobject();
result.param1=param1;
返回结果;
}
var i=0;
var-html;
对于(i=0;i我认为它有效

<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.css"
/>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.js"></script>

$(文档).ready(函数(){

函数testObject(){
这是1.1;
}
函数maketestObject(param1){
var result=newtestobject();
result.param1=param1;
返回结果;
}
var i=0;
var-html;

对于(i=0;i您是否尝试使用.live()函数 当您向dom动态添加元素时,它们没有事件,所以我建议您这样做

    for (i = 0; i <= 5; i = i + 1) {
                var testInstance = maketestObject("test param");
                var temp = "'" + testInstance + "'";
                html += '<li><a href="#" data-theme="a" class="new" return false;" rel="external" data-role="button">click test1</a></li>';
            }

/*** jQuery code ****/
        $(".new").live("click",function(){
    // your code here 
    aler("it working");
    });

for(i=0;i我想你可以用这个实现你的oal

<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.css"
/>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.js"></script>
</head>

<body>
    <script>
// Create global object array ..
        var testInstanc = [];
        $(document).ready(function() {




            function testObject() {
                this.param1;
            }

            function maketestObject(param1) {
                var result = new testObject();
                result.param1 = param1;
                return result;
            }

            var i = 0;
            var html;
            for (i = 0; i <= 5; i = i + 1) {

                // var temp = "'" + testInstance + "'";
// set array to object
                 testInstanc[i] = maketestObject("test param" + i);

pass clickhandler function to your array index
                 html += '<li><a href="#" data-theme="a" onclick="clickHandler(' + i + '); return false;" rel="external" data-role="button">click test1</a></li>';
            }

            $("#testList").append(html);
            $("#testList").listview("refresh");



        });
        function clickHandler(i) {

//创建全局对象数组。。
var testInstanc=[];
$(文档).ready(函数(){
函数testObject(){
这是1.1;
}
函数maketestObject(param1){
var result=newtestobject();
result.param1=param1;
返回结果;
}
var i=0;
var-html;

对于(i=0;我认为这在一开始是可行的,因为它将temp作为一个对象传递,换句话说,单击处理程序中的alert(e)返回“[object object]”,但它会丢失它的字段,换句话说,alert(e.param1)返回“undefined”。再次感谢您的帮助,我非常感谢。您的建议确实有效,但我的目标是传入一个可以包含多个字段的对象,所有字段都可以在单击处理程序中访问。您的建议基本上只是传递一个字符串。感谢您的回复。我尝试通过标记绑定数据的原因是因为我需要在拆分按钮列表中对每个元素进行两个单独的数据绑定。到目前为止,我还无法使用jQuery的数据绑定方法来完成这项工作。@Ben Pearce您检查过这个解决方案吗?
    for (i = 0; i <= 5; i = i + 1) {
                var testInstance = maketestObject("test param");
                var temp = "'" + testInstance + "'";
                html += '<li><a href="#" data-theme="a" class="new" return false;" rel="external" data-role="button">click test1</a></li>';
            }

/*** jQuery code ****/
        $(".new").live("click",function(){
    // your code here 
    aler("it working");
    });
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.css"
/>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.js"></script>
</head>

<body>
    <script>
// Create global object array ..
        var testInstanc = [];
        $(document).ready(function() {




            function testObject() {
                this.param1;
            }

            function maketestObject(param1) {
                var result = new testObject();
                result.param1 = param1;
                return result;
            }

            var i = 0;
            var html;
            for (i = 0; i <= 5; i = i + 1) {

                // var temp = "'" + testInstance + "'";
// set array to object
                 testInstanc[i] = maketestObject("test param" + i);

pass clickhandler function to your array index
                 html += '<li><a href="#" data-theme="a" onclick="clickHandler(' + i + '); return false;" rel="external" data-role="button">click test1</a></li>';
            }

            $("#testList").append(html);
            $("#testList").listview("refresh");



        });
        function clickHandler(i) {
        }

    </script>
    <div data-role="page" class="type-interior">
        <div id="main" data-role="content">
            <ul id="testList" data-role="listview"></ul>
        </div>
    </div>
</body>
</html>