Передача переменных в jquery - PullRequest
1 голос
/ 06 января 2011

Каков наилучший способ передать переменную full в функцию b.Я не хочу использовать глобальные переменные.Вернуть единственный вариант.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> 

<style> 
    .aaa, .bbb, .ccc { width:100px; height:100px;background-color:#ccc;margin-bottom:5px;}
</style>
<body class="123">

    <p id="ptest"></p>
    <p class="aaa" id="aaaid"></p>
    <p class="bbb" id="bbbid"></p>
    <p class="ccc" id="cccid"></p>
    <div></div>
</body>
<script type="text/javascript">
    $("body").click(function(e){
        var name = $(e.target)[0].nodeName;
        var nameid = $(e.target)[0].id;
        var classname = $(name+"#"+nameid).attr('class');
        var full = name+"#"+nameid;
        console.log(nameid);

        function b(){
            alert(full);
        };
    });
</script>

Ответы [ 4 ]

6 голосов
/ 06 января 2011

Вы можете передать переменную в функцию, определив ее следующим образом:

function b(x) {
    alert(x);
}

и затем вызывая его, указав его имя и передав переменную в качестве аргумента:

b(full);

Итак, в контексте вашего кода:

$("body").click(function(e){
    var name = $(e.target)[0].nodeName;
    var nameid = $(e.target)[0].id;
    var classname = $(name+"#"+nameid).attr('class');
    var full = name+"#"+nameid;
    console.log(nameid);

    function b(x){
        alert(x);
    };

    b(full);
});
1 голос
/ 06 января 2011

Если вы не хотите, чтобы функция b существовала или использовалась вне функции click, я бы переместил ее за пределы анонимной функции.А затем просто укажите аргументы в определении, а затем просто передайте их, как обычно

Пример

<script type="text/javascript">
    $("body").click(function(e){
        var name = $(e.target)[0].nodeName;
        var nameid = $(e.target)[0].id;
        var classname = $(name+"#"+nameid).attr('class');
        var full = name+"#"+nameid;
        console.log(nameid);
        b(full);
    });
    function b(full)
    {
        alert(full);
    };
</script>
1 голос
/ 06 января 2011
    // define b
    function b(full) {
        alert(full);
    }

На самом деле вы не используете глобальные переменные. Вы определяете их внутри анонимной функции JQuery, связанной с элементом body.

1 голос
/ 06 января 2011

аргумент? что-то мне здесь не хватает?

function b(x){ alert(x); }; 

вызов с

b(full);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...