Jquery $(this)不在类选择器上工作

时间:2011-12-11 13:49:34

标签: jquery jquery-ui jquery-ui-dialog

感谢您的时间

我有以下jquery ui对话框

$(function() {
        $( ".dialog" ).dialog({
            title: $(this).attr('name')+'WHYYY',
            autoOpen: false,
            show: "blind",
            hide: "explode"
        });

html很简单:

    <div class="dialog" style="" id="helper" name="helper">
    <textarea id="helper_e" name="helper_e">
    some text
    </textarea>
    </div>
<!--and so on with multiple dialog classes with different id's and name's-->

意图将名称作为标题。

它不起作用,在标题中输出以下内容:

UNDEFINEDWHYYY

为什么呢?谢谢你的提示

2 个答案:

答案 0 :(得分:3)

因为this没有像您预期的那样引用div.dialog。它指的是window.document。你应该像这样重写它:

$(function() {
    $('.dialog').each(function() {
        var props = {
            title: $(this).attr('name')+'WHYYY',
            autoOpen: false,
            show: "blind",
            hide: "explode"
        };

        $(this).dialog(props);
    });
});

答案 1 :(得分:0)

this在您尝试使用它的上下文中没有正确的值。

假设您无法添加标题attr,您可以遍历.dialog选择器中的项目并以编程方式添加标题attr。

$( ".dialog" )
    .each(function () {
         $(this).attr('title', $(this).attr('name')+'WHYYY');
    }) 
    .dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode"
    });