0

我需要在这个 jquery 代码中获取 productbox div 的 id。我尝试了 $this.attr('id) 但结果是 object object 或 undefined。我怎样才能获取 productbox div 的 id?提前致谢

Javascript:

$('body').on('mouseenter', 'div.productbox', function() 
{
    buttonDiv = $(this).children('div.roll');
    myTimeout = setTimeout(function() 
    {
        Divid = ?;
        buttonDiv.toggle();
    }, 500);
});

$('body').on('mouseleave', 'div.productbox', function() 
{
    buttonDiv.hide();
    clearTimeout(myTimeout);
});

$('body').on('hover', 'div.productbox', function() 
{
    var buttonDiv = $(this).children('div.roll1');
    buttonDiv.toggle();
});   

HTML:

<div id="40" class="productbox">
    <span class="new">Yeni</span>
    <div class="roll" style="display: none;">
        <input type="button" value="139"> Like <input type="button" value="34"> Comment
    </div>
    <div class="productpicture" onclick="rload(40)">
        <img style="margin:auto; width:180px;overflow:hidden;display:block"  src="pictures/40.jpg">
    </div>
    <div class="ps">
        <div class="productname">Giysi</div>
        <div class="companyname" onclick="go('2');">Koton</div>
        <div class="price">9.99 TL</div>
    </div>
</div>
4

3 回答 3

1

您可以像这样利用关闭:

<script type="text/javascript">
    $('body').on('mouseenter', 'div.productbox', function()
    {
        var $productBox = $( this );
        buttonDiv = $productBox.children('div.roll');
        myTimeout = setTimeout(function ()
        {
            Divid = $productBox.attr('id');
            buttonDiv.toggle();
        }, 500);
    });
    $('body').on('mouseleave', 'div.productbox', function ()
    {
        buttonDiv.hide();
        clearTimeout(myTimeout);
    });
    $('body').on('hover', 'div.productbox', function ()
    {
        var buttonDiv = $(this).children('div.roll1');
        buttonDiv.toggle();
    });
</script>

<div id="40" class="productbox">
    <span class="new">Yeni</span>
    <div class="roll" style="display: none;">
        <input type="button" value="139">
        Like
        <input type="button" value="34">
        Comment
    </div>
    <div class="productpicture" onclick="rload(40)">
        <img style="margin:auto; width:180px;overflow:hidden;display:block"  src="pictures/40.jpg">
    </div>
    <div class="ps">
        <div class="productname">Giysi</div>
        <div class="companyname" onclick="go('2');">Koton</div>
        <div class="price">9.99 TL</div>
    </div>
</div>
于 2013-04-20T14:58:45.283 回答
0

你需要这样做:

$('body').on('mouseenter', 'div.productbox', function() {
    myTimeout = setTimeout((function(self) {
        return function() {
            buttonDiv = $(self).children('div.roll');
            Divid= $(self).attr("id");
            console.log(Divid);
            buttonDiv.toggle();
        }
    })(this), 500);
});

检查 JSFiddle 以获得完整的工作代码:http: //jsfiddle.net/kBRyu/2/

于 2013-04-20T14:55:52.200 回答
0

您得到“未定义”等的原因是因为您实际上是在请求窗口获取其 ID。

您需要做的是为 div 声明一个局部变量,然后在超时内使用该变量来获取 ID。

         $('body').on('mouseenter', 'div.productbox', function() {
             var $this = $(this);
             var buttonDiv= $this.children('div.roll');
             var myTimeout = setTimeout(function() {
                 var Divid= $this.attr('id');
                 buttonDiv.toggle();
             }, 500);
         });
于 2013-04-20T15:00:39.037 回答