日期:2014-05-16  浏览次数:20459 次

发现一个很奇怪的jQuery问题,郁闷了很久了。
发现一个很奇怪的jQuery问题,请教大家了:

JScript code

var $a = $("<div>");
var $b = $("<span>").html("bbb");
$b.extend({
        i : 123
     });
$a.extend({
        $b : $b
     });
    
$b.appendTo($a);
$a.appendTo(document.body);
$a.$b.click(function(){
               alert($(this).i);
            });




虽然打印不出123,总是打印出来是undefined,为什么这样有谁知道原因吗,另外能否提供解决办法,谢谢。

顺便说一下alert($(this).html());可以打印出"bbb"。

------解决方案--------------------
HTML code

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
window.onload=function(){
    var $a = $("<div>");
    var $b = $("<span>").html("bbb");
    $b.extend({
        i : 123
    });
    $a.extend({
        $b : $b
    });
    $b.appendTo($a);
    $a.appendTo(document.body);
    $a.$b.click((function(obj){
        return function(){alert(obj.i)};
    })($b));
}
</script>

------解决方案--------------------
JScript code

$a.$b.click((function(obj){
        return function(){alert(obj.i)};
    })($b));