1

我有一个由一些 javascript 代码动态生成的琐事页面。它在大多数浏览器(Chrome、Safari、Firefox、Opera、IE9)中都能正常工作,但在 IE8 上却有一个奇怪的问题。当我调用 $(this).val() 作为按钮单击事件处理程序的一部分时,我得到一个空字符串作为响应,即使单击的按钮具有值。

相关的 JavaScript:

$(document).ready(function() {
    $(document).on("click", ".btn", function() {
        if(panel % numPanels === 1)
            {category = $(this).val();}
        nextPanel(prop);
    });
});

相关HTML:

<div id="buttons">
<button type="button" class="btn" value="One">Group One</button>
<button type="button" class="btn" value="Two">Group Two</button>
<button type="button" class="btn" value="Three">Group Three</button>
</div>

知道怎么了?

编辑:我正在使用 jQuery 1.7.2,并且使用console.log($(this).attr("value"))并且console.log($(this).prop("value"))还返回一个空白字符串。

4

3 回答 3

1

如果您要使用 javascript,它是 <button> 中的一个错误,那么我的建议是您使用 html -data 属性:

<div id="buttons">
    <button type="button" class="btn" data-value="One">Group One</button>
    <button type="button" class="btn" data-value="Two">Group Two</button>
    <button type="button" class="btn" data-value="Three">Group Three</button>
</div>

并使用 jquery 代码:

$(document).ready(function() {
    $(document).on("click", ".btn", function() {
        if(panel % numPanels === 1) {
            category = $(this).data("value");
        }
        nextPanel(prop);
    });
});
于 2012-07-06T07:53:22.187 回答
1

你可以试试$(this).attr("value")

或者

您可以使用$(this).prop("value")

.prop() 需要 jQuery 1.6+ 版本

于 2012-07-06T07:40:29.760 回答
0

尝试使用.attr

编辑:添加完整代码

$(document).ready(function() {     
$(document).on("click", ".btn", function() {
     if(panel % numPanels === 1)
// retrieve using attr
         {category = $(this).attr("value");}
     nextPanel(prop);
 }); 
}); 
于 2012-07-06T07:40:18.503 回答