有没有办法在document.ready()中获取引导模式的e.relatedTarget?

时间:2017-09-28 09:56:36

标签: javascript jquery twitter-bootstrap

我有两个按钮调用相同的模态,我设置了data-button属性来检测调用模态的按钮。

<button type="button" id="another" data-toggle="modal" data-target="#modal" class="btn btn-warning" data-button='another'>Add another</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal" data-button="lab">Add  lab</button>

我想要做的是根据按钮调用者更改模态中的标签。我这样做了:

<script>
$('#modal').on('show.bs.modal', function(e) {
    var $trigger = $(e.relatedTarget);
    $('#vv_type').val($trigger.data('button'));
    v_type = $trigger.data('button');
    if (v_type == 'lab') {
        $('#ModalLabel').html('changed label');
        $("label[for='id_date_of_label']").html('label inside modal changed');
    }
})
</script>

只有在第一次显示模态时它才能正常工作,之后每当我点击按钮时,总会显示相同的更改标签,这是$('#modal').on('show.bs.modal', function (e) {

的逻辑

有没有办法声明v_type变量并将其发送到document.ready()函数,这样我确保每次单击调用模态的按钮时脚本都会运行(不仅是第一次?)

2 个答案:

答案 0 :(得分:0)

我已经通过从模态中的隐藏输入data-button获取vv_type来解决这个问题(我的模态已经有一个表单)并且我添加了这个每次模态运行时运行的脚本所示:

 <script>
    $(document).ready(function () {
        $('.modal').on('show.bs.modal', function (e) {
            if ($('#vv_type').val() == 'lab') {
                 $('#ModalLabel').html('changed label');
    $("label[for='id_date_of_label']").html('label inside modal changed');
            }
            else {
                 $('#ModalLabel').html('origin label');
    $("label[for='id_date_of_label']").html('label inside modal origin');
            }
        });
    });
</script>

答案 1 :(得分:0)

您的原始代码仍适用于我。缺少的唯一部分是else的{​​{1}}条件。我可以看到每个按钮上的标签更改。

&#13;
&#13;
if (v_type == 'lab') {
&#13;
$('#myModal').on('show.bs.modal', function (e) {
	var $trigger = $(e.relatedTarget);
	//$('#vv_type').val($trigger.data('button'));
	v_type = $trigger.data('button');
	
	if (v_type == 'lab') {
		$('#buttonText').html(v_type);
		//$("label[for='id_date_of_label']").html('label inside modal changed');
	}
	else
	{
		$('#buttonText').html(v_type);
		//$("label[for='id_date_of_label']").html('label inside modal changed');
	}
})
&#13;
&#13;
&#13;