0

次のコードがあります。

console.log($(".resultLike"));
$(".resultLike").on("click", function (event) {
    alert('test');
    event.stopPropagation();
    alert('test1');
    value['clicked'] = 1;
    $.ajax({
        url: 'scripts/php/userProfile.php',
        data: {
            action: value
        },
        type: 'post',
        dataType: 'json',
        success: function (profileData) {
            if (profileData == 'removed') {
                $(me).children('.resultInside')
                .children('.resultData')
                .children('.resultLike').html('Favourite?');
            } else if (profileData == 'notLoggedIn') {
                $(me).children('.resultInside')
                .children('.resultData')
                .children('.resultLike').html('Login to add');
            } else {
                $(me).children('.resultInside')
                .children('.resultData')
                .children('.resultLike').html('un-Favourite');
            }
        }
    });
});

私の期待は、 div をクリックするresultLikeと、function(). ただし、何もしません。そこには 2 つのalert()呼び出しがあり、どちらも呼び出されていません。の出力console.log()は次のとおりです。

[
<div class=​"resultLike searchBarGameLike">​&lt;/div>​
] 

それは、ページに掲載されていることを証明します。どんな助けでも感謝します、ありがとう。

編集:

私は実際に 2 つの .on() イベントを使用していることに言及する必要があると思います。これは実際にはすべて私のコードです。問題は $("body").on("click", ".resultLike", function(){ ライン周辺にあり、機能していません。

$searchedGamesContainer.on(
    "click",
    ".box",
    function(event){
        if(!$displayLock){
            $displayLock = true;
            var description;
            var user_id;
            if($(this)[0].style.width == '75%'){
                var org_img = $(this).children(".resultInside").find("img").attr("src"); 
                $(this).children(".resultInside").append("<img src='"+org_img+"' id='imgId'/>");
                $(this).children(".resultInside").css('height','auto');
                $(this).css('width', '18%');
                $(this).css('height', 'auto');
                $(this).find(".resultData").fadeOut('fast');
                setTimeout(function(){$searchedGamesContainer.masonry('reload');},300);
                setTimeout(function(){$displayLock = false;},1000);
            }else{
                var me = this;
                var pos; 
                largeImage=  new Image();
                value['name']=$(me).find("p").html();
                oldImage = $(this).find("img").attr("src");
                for(var i = 0; i<$searchBarGames.length; i++){
                    if($searchBarGames[i][5] == value['name']){
                        pos = i; 
                        break
                    }
                }

                description = $searchBarGames[pos][2];
                $(me).find("img").hide();
                largeImage.src = $searchBarGames[pos][4];
                $(me).find("img").attr("src",largeImage.src);
                $(me).children(".resultInside").css('height','400px');
                $(me).css('width', '75%');

                $(me).children(".resultInside").html("\
                    <div class='resultData'>\
                        <div class='resultImg'><img src='"+ largeImage.src +"'></div>\
                        <div class='resultName'>" + value['name'] + "</div>\
                        <div class='resultDesc'>" + description +"</div>\
                        <div class='wikiLink searchBarGameWiki'><a href='http://wikipedia.org/wiki/" + value['name'] + "'>Wikipedia</a></div>\
                        <div class='resultLike searchBarGameLike'></div>\
                    </div>");
                value['clicked']=0;

                $.ajax({
                    url:'scripts/php/userProfile.php',
                    data:{action:value},
                    type: 'post',
                    dataType: 'json',
                    success:function(profileData){
                        //logic
                    }
                });     

                console.log($(".resultLike"));

                $("body").on("click", ".resultLike", function(){
                        alert('test');
                        event.stopPropagation();
                        alert('test1');
                        value['clicked']=1;
                        $.ajax({
                            url:'scripts/php/userProfile.php',
                            data:{action:value},
                            type: 'post',
                            dataType: 'json',
                            success:function(profileData){
                                //logic
                            }
                        });
                    }
                );  
            }
        }
    }
);
4

2 に答える 2

3

試す

$("body").on("click", ".resultLike", function(){
      // your code goes here.
});

div.resultLikeが動的に追加された場合、実装はバインドされない可能性があります

于 2012-08-06T12:05:54.983 に答える
0

この問題は、実際には完全に CSS が原因でした。

アラートをオンにしたい div 要素については、ボタンのように見えるようにマークアップしました。
しかし、私はこれに気づきました:

.resultLike:active {
    position:relative;
    top:1px;
    z-index:1235;
}

理由は 100% ではありませんが、ボタンをクリックしたときに実際にボタンの位置が変わっていたと思います。つまり、アクティブになるとすぐに、マウスがあった場所ではありませんでした。私は間違っているかもしれませんが、これで修正されました。

于 2012-08-06T13:30:23.540 に答える