1

为什么这在 IE/Chrome 中不起作用,但在 FF/Opera 中起作用?我想让锚点周围的 div 可以点击,这样当你点击 div 时,它的行为就像你点击锚点本身一样。

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function bindOnClickPostBack() {
        $(".header a").each(function () { 
            var anchor = $(this);
            var clickEvent = anchor.attr('href');
            var header = anchor.parent();
            header.css('background-color', 'yellow');
            header.attr('onclick', clickEvent);
        });
        /*$(".header").live("click", function(){
            anchor = $(this).find('a');
            var clickEvent = anchor.attr('href');
            alert(clickEvent);
            $(this).css('background-color', 'yellow');
            //header.attr('onclick', clickEvent);
            //anchor.click();
        });*/
        return false;
    }

    $(document).ready(function() {
        bindOnClickPostBack();
    });
</script>

身体:

<div style="background-color:red" class="header"> <a href="alert('hello1')">Shortcut1</a></div>
<div style="background-color:red" class="header"> <a href="alert('hello2')">Shortcut2</a></div>
<div style="background-color:red" class="header"> <a href="alert('hello3')">Shortcut3</a></div>
<div style="background-color:red" class="header"> <a href="alert('hello4')">Shortcut4</a></div>
4

4 回答 4

4

嗯……你为什么要那样做?如果您希望整个标题可点击,只需制作一个大块级锚点:

<a href="#" class="header">Big Header</a>

和:

a.header { display: block; width: 100%; height: 50px; background: yellow; }

$("a.header").click(function() {
  // do stuff
  return false;
});

或者在这种情况下,href 就足够了。

如果你真的想走你现在的路线(我建议不要这样做),你需要找出 href 属性中的内容。不同的浏览器可能会在某种程度上对其进行按摩。

更正常的绑定点击事件的方式是:

$("div.header").click(function() {
  // do stuff
});

不要直接弄乱 onclick 属性。

或者你可以这样做:

$("div.header").click(function() {
  return $("a". this).click();
});

但又一次:为什么不把锚定得足够大以成为标题,如果有必要,让它成为块级元素?

于 2009-11-24T09:58:40.320 回答
2

由于您使用的是 jquery,请尝试以下操作:

$(document).ready(function() {
    $('div.header').click(function() {
       $(this).find('a').click();
    });
});
于 2009-11-24T09:55:27.993 回答
0

+1 为 cletus 的回答,但我也会添加 -事件委托

于 2009-11-24T21:38:14.620 回答
0

试图做同样的事情,一个列表元素中的链接。要在 A 标记上产生点击,在 LI 或标题元素标记内会产生“递归过多”错误。确实,就像 Cletus 所说,将 A 作为块元素而不是内联元素可以达成交易。

于 2013-02-13T15:20:51.253 回答